名称字段的正则表达式


Regular Expression for name field

我正在使用此代码,但它不能正确用于-(主)符号

^'b'w{1,}(_'.-)?'w'b$ or ^'b'w{1,}(_'.'-)?'w'b$

如果字符串是这样的,上面的代码就不起作用了:name name

我想用这个代码做的是:名称大多数以字母数字开头,也可以以字母数字结尾,可以有这些符号(.-_),但只能在中间

name => true
Name_ => false
Name_sa => true
name._ => false  
name.-as => false

我认为应该这样做:

^[^'W_]+([_.-][^'W_]+)?$

这里,[^'W_]只匹配除非单词字符和_之外的任何字符,因此基本上匹配除_之外的任何单词字符。这是必要的,因为'w确实包含_

正则表达式有两个主要问题:

  • 你忘记了允许多次重复期末考试
  • 您只允许名称中包含一个特殊符号

此外,您还可以使用+来代替{1,},这使它更具可读性。所以这个正则表达式应该可以实现您想要的:

/^''b''w[''w_.-]*''w''b$/

name-name应该可以工作。如果您想让name.-as这样的东西工作,您需要将?更改为*,以允许在中间有多个字符。