我正在使用此代码,但它不能正确用于-(主)符号
^'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
这样的东西工作,您需要将?
更改为*
,以允许在中间有多个字符。