【发布时间】:2011-08-23 05:21:11
【问题描述】:
好的,我已经读了一整天的正则表达式,但仍然没有正确理解它。我正在尝试做的是验证名称,但我可以在互联网上找到的功能仅使用[a-zA-Z],而忽略了我需要接受的字符。
我基本上需要一个正则表达式来检查名称是否至少是两个单词,并且它不包含数字或特殊字符,如!"#¤%&/()=...,但是这些单词可以包含 æ、é、Â 等字符。 ..
一个被接受的名字的例子是:“John Elkjærd”或“André Svenson”
一个不被接受的名字是:“Hans”、“H4nn3 安徒生”或“马丁·亨利克森!”
如果这很重要,我使用 javascript .match() 函数客户端并希望仅在“负面”服务器端使用 php 的 preg_replace()。 (删除不匹配的字符)。
任何帮助将不胜感激。
更新:
好的,感谢Alix Axel's answer 我已经完成了重要的部分,服务器端的部分。
但正如LightWing's answer 的页面所暗示的那样,我找不到任何关于 javascript 的 unicode 支持的信息,所以我最终为客户端提供了一半的解决方案,只需检查至少两个单词和至少 5 个字符像这样:
if(name.match(/\S+/g).length >= minWords && name.length >= 5) {
//valid
}
另一种方法是按照shifty's answer 中的建议指定所有 unicode 字符,我可能最终会做类似的事情,以及上面的解决方案,但这有点不切实际。
【问题讨论】:
-
你能举例说明一下吗
-
@Amit Gupta,谢谢,我做到了。 :)
标签: php javascript regex character-properties