我正在尝试使用正则表达式来检测用户何时输入“Bob& Jane”或“Bob and Jane”之类的内容。
我尝试过以下操作,当输入“andy”或“andrew”之类的东西时,所有这些都被触发:
/^[a-zA-Z]( & | and )[a-zA-Z]$/
/(" "and" "|" "&" ")/
/( and | & )/
(我使用和不使用'^'
和'$'
)
先谢谢你的高级思想!
答案 0 :(得分:2)
第二种方法似乎很好,但引号混淆了正则表达式引擎。请改用空格标记:
/[a-z]+(\sand\s|\s&\s)[a-z]+/
答案 1 :(得分:2)
您希望捕获表达的哪一部分?
(\&|\band\b)
不会查找空格,但会查找由某种字边界(如空格)(live example)分隔的&
符号OR and
。< / p>
您可能会看到以下代码:
$re = '/(\&|\band\b)/mi';
$str = 'Bob & Jane\nBob and Jane\nAndy and Andrew\nFrank Anderson & Michael\nWhere is Waldo && Carmen Sandiego and Crew & Oliver and Company\n';
preg_match_all($re, $str, $matches);
如果您希望自己捕获名称,可以随时展开名称,但名称很容易very hard to define。
答案 2 :(得分:1)
我个人会用:
/^\w+\s(&|and)\s\w+$/
这样你就不必重复围绕&amp; /和。