PHP - 正则表达式 - 验证名称字段 - 检测用户是否输入“&”或'和'

时间:2014-06-19 15:25:26

标签: php regex forms validation preg-match

我正在尝试使用正则表达式来检测用户何时输入“Bob& Jane”或“Bob and Jane”之类的内容。

我尝试过以下操作,当输入“andy”或“andrew”之类的东西时,所有这些都被触发:

/^[a-zA-Z]( & | and )[a-zA-Z]$/

/(" "and" "|" "&" ")/

/( and | & )/

(我使用和不使用'^''$'

尝试了所有这些

先谢谢你的高级思想!

3 个答案:

答案 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; /和。