PHP-Regex-验证名称字段-如果用户输入'&';或者';和';


PHP - Regex - Validation for name field - Detect if user enters '&' or 'and'

我正在尝试使用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+$/

这样你就不必重复&/周围的空格和