正则表达式接受数字,但它不应该

时间:2014-03-23 17:05:39

标签: php regex preg-match

/\s*([A-ZÖÜÄ]{1}([a-zöüä]){2,15})(([-| von ]?[A-ZÖÜÄ]{1}[a-zöüä]{2,15})*?)/u

这不应该接受任何数字,但确实如此,它适用于前三个字符(不包括空格)。

这:根据代码不接受Pe2。没关系 -  但是:Pet2被接受了,我找不到原因。 实际上我根本不想要任何数字。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您错过了^$锚点,我非常确定[-| von ]?与您认为的不匹配,我想你想要(?:-| von )?

你的正则表达式应该是:

/^\s*[A-ZÖÜÄ][a-zöüä]{2,15}(?:(?:-| von )?[A-ZÖÜÄ][a-zöüä]{2,15})*$/u

我认为分隔符不是可选的,所以:

/^\s*[A-ZÖÜÄ][a-zöüä]{2,15}(?:(?:-| von )[A-ZÖÜÄ][a-zöüä]{2,15})*$/u

答案 1 :(得分:-1)

我试过这个:

^\s*([A-ZÖÜÄ]{1}([a-zöüä]){2,15})(([-| von ]?[A-ZÖÜÄ]{1}[a-zöüä]{2,15})*?)$

Pt2 =>不好 Pet2 =>不行

您可以直接在线试用您的正则表达式。还有一个debuger和一些文档。非常有用:http://regex101.com/

希望有所帮助;)