如何修改此JavaScript正则表达式以检查某人的有效名称?

时间:2010-12-03 23:30:44

标签: javascript regex

此JavaScript正则表达式检查某人是否输入了有效的用户名:

var regexp = "/^[a-z]([0-9a-z])+$/i";
if(!regexp.test(name)) 
  return "Name may consist of letter, numbers and start with a letter." );

但我想检查此人是否输入了有效名称。

换句话说:

Cher
Michael Jackson
Mary J. Blige
François Truffaut

我想不出任何除了字母之外的任何事情,也许某个时期对某个人的名字有效。

我想拒绝任何其他类型的标点符号作为验证错误。

但我想确保,例如,François Truffaut不会被拒绝,因为他有法国人使用的字母c的有趣版本。

我如何在Javascript正则表达式

中执行此操作

3 个答案:

答案 0 :(得分:4)

为什么不试着仅仅禁用名称中不需要的标点符号,可能是较短的列表。

var regexp = "/^[\\\/$&^!@#%*~\?\[\]=\_\(\)]/"

这可能不是一个完整的清单,但它应该是一个简短的清单。这些似乎是最合理的IMO。

答案 1 :(得分:1)

试试[\d\w.]+。它应该照顾那些有趣的法国人物。在线测试here(这是红宝石,但它几乎相同)。

[\d\w.][\d\w. ]*[\d\w.]将采用全名,包括中间可能的空格。但是将名称长度限制为两个。但它应该没问题。

答案 2 :(得分:-1)

对名称强制执行字符限制是一个坏主意。