我需要,如果字符串中包含打印"是"的符号.
和@
,则队列符号无关紧要,重要的是字符串中至少会有一次这样的符号,我需要使用regexp来实现这一点。
我写:
if (preg_match("#('@.*'.)|('..*'@)#",$str)) {
echo "yes";
}
但我怀疑是否可以为这个编写更简单的模式
使用此正则表达式(?=.*'.)(?=.*@).+
(?=.*'.) dot exists
(?=.*@) @ exists
.+ any string
您可以使用前瞻来分离两个条件:
^(?=.*'.)(?=.*@)
不需要启动字符串锚点,但它有助于性能。
也许没有正则表达式会更容易一些。
if(strpos($str, ".") !== false || strpos($str, "@") !== false) {
echo "yes";
}
那么您就不需要正则表达式了,它可能会快一点。然后只搜索字符串中的字符。