Ing*_*dös 5 php regex preg-match
亲爱的Stackoverflowia,亲爱的RegEx-Gurus,
我正在网上搜索正则表达式模式,检查德语全名的合理性.我发现很多关于模式的帖子没有德语变音符号...从所有这些帖子和我的逻辑理解我一起构建这个模式:
^([A-ZÖÄÜ]{0,1})([-a-zäöüß\.']{2,30})( {1}|-{1})([A-ZÄÖÜ]{0,1})([a-zäöüß']{0,30})( {1}|-{1})?([A-ZÖÄÜ]{0,1})([a-zäöüß']{0,30})(( {0,1}|-{1})([A-ZÖÄÜ]{0,1})([a-zäöüß']{0,30}))+$
Run Code Online (Sandbox Code Playgroud)
它应该符合以下可能的变化(现在状态)(预期):
(现在状态表示现在是否匹配,预期表示它是否应该匹配)
我需要在PHP中将此模式用于preg_match.
如果有人能帮助我改进这种模式,我会非常感激.一旦它 - 几乎完美我将它添加到http://gskinner.com/RegExr/供公众使用(他们有2或3个全名检查,但它们不能正常工作或根本不工作).
谢谢.提前帮助你......
最好的问候,英格玛
鉴于世界各地使用的各种完全有效的名称,您应该对其进行绝对最低限度的验证.当他们被告知他们的名字无效时,他们名字中带有连字符和叛教的人会理所当然地生气.
即使试图强制首字母在他们之后有一个点也许是错误的,因为世界上有很多人都有单字符名称.
因此,我的建议是根本不对其进行验证.
但是,如果你必须进行某种验证,那么我能给出的最好的建议是坚持过滤掉你绝对想要排除的符号,并避免做任何比这更复杂的事情.
所以简单的模式可能如下所示:
/[^\$%\^\*£=~@]/
Run Code Online (Sandbox Code Playgroud)
这将阻止用户在其名称中包含符号$或符号@,因为是的,对于有效名称而言,这些符号非常难以置信.但请确保您允许使用引号和连字符,逗号,甚至括号,因为真人在其名称中确实包含这些字符.
希望有所帮助.
因此,如果有人找到此线程并正在寻找最佳答案,这里是:
\n\n(感谢所有在此线程上提供的良好帮助!)
\n\n使用这个正则表达式模式:
\n\n^([^\\$%\\^*\xc2\xa3=~@\\d]+){2,30} ([^\\$%\\^\\.*\xc2\xa3=~@\\d]+){2,30}+$\nRun Code Online (Sandbox Code Playgroud)\n\n我上面的列表(原始问题)如下所示:
\n\n可能的变化(现在的状态)(预期):
\n\n(解释:例如“li fu”(匹配)(是)的意思是,名字“li fu”匹配并且“yes”是预期的)
\n\n再次感谢大家,这种模式正是我所追求的。
\n\n此致,
\n\n“Ingmar Erd\xc3\xb6s”(匹配)(是)
\n\nPS:这种模式在基于 ecma (javascript) 的正则表达式操作中工作得很好,但在基于 prce 的操作(如 PHP 中的 preg_match)中似乎不起作用。\n有人知道如何将 ecma 转换为基于 prce 的模式吗???已经在谷歌上下搜索过,但根本没有在线转换器...\n请给我一些想法、提示或解决方案。谢谢。提前。
\n