Regex接受数字,但不应该't


Regex accepts numbers but it shouldn't

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

这应该不接受任何数字,但它确实接受了,奇怪的是,它对前三个字符(不包括空格)有效。

这:根据代码Pe2不被接受。没关系但是Pet2被录取了,我不知道为什么。实际上,我根本不想让任何数字通过。

任何帮助都非常感谢。

您缺少^$锚,我很确定[-| 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

我试了这个:

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

Pt2 => not OKPet2 => not OK

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

希望对你有帮助;)