我正在尝试使用regex来检测用户何时输入类似"Bob&Jane"或"Bob and Jane"的内容。
我尝试了以下操作,当输入"andy"或"andrew"之类的内容时,所有操作都会被触发:
/^[a-zA-Z]( & | and )[a-zA-Z]$/
/(" "and" "|" "&" ")/
/( and | & )/
(无论有没有'^'
和'$'
,我都尝试了所有这些(
感谢Advanced中的您的想法!
第二种方法看起来不错,但引号混淆了正则表达式引擎。改为使用空白标记:
/[a-z]+('sand's|'s&'s)[a-z]+/
您希望捕获表达式的哪一部分?
('&|'band'b)
将不查找空白,而是查找被某种单词边界(如空白(分隔开的&
符号或and
(实时示例(。
你可能会看到这样的代码:
$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);
如果您希望捕获名称本身,您可以随时扩展它,尽管名称很难轻松定义。
我个人会使用:
/^'w+'s(&|and)'s'w+$/
这样你就不必重复&/周围的空格和