名称字段的正则表达式

时间:2012-02-13 18:36:03

标签: php javascript regex

我正在使用此代码,但它无法正常使用 - (主电源)符号

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

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

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

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

3 个答案:

答案 0 :(得分:4)

我认为应该这样做:

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

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

答案 1 :(得分:1)

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

  • 你忘了允许多次重复最后的\ w
  • 您只允许名称
  • 中的其中一个特殊符号

此外,代替{1,},你也可以使用+,这使它更具可读性。所以这个正则表达式应该达到你想要的效果:

  

/ ^ \ B \ W [\ W _.-] * \ W \ B $ /

答案 2 :(得分:0)

name-name应该有效。如果您需要name.-as之类的内容,则需要将?更改为*以允许中间包含多个字符。