[英]RegEx a name with special characters in javascript
我是RegEx的新手,我遇到了一个问题。 我想正则表达名称。 我希望它最多100个字符,包含至少2个字母字符,它将允许字符' - '。
我没有问题,只检查字母字符或字母字符和连字符,但我不想要一个基本上可以'---------'的名称。
我的代码没有检查连字符是
var nameRegExp = /^([a-z]){2,100}$/;
对代码的解释也很受欢迎。 谢谢!
我猜
/^(?=.*[a-z].*[a-z])[a-z-]{1,100}$/
前瞻部分( ^(?=.*[az].*[az])
)检查是否至少有两个字母。 这种模式(“字符串的开头,后跟......”)是在正则表达式中表达附加条件的常用方法。
您可以限制的数量-
通过加入负断言,作为@Mike 指出 :
/^(?=.*[a-z].*[a-z])(?!(?:.*-){11,})[a-z-]{1,100}$/ // max 10 dashes
但是编写一个匹配“好”字符串而不是试图禁止“坏”字符串的表达式可能更容易。 例如,这个
/^[a-z]+(-[a-z]+)*$/
看起来像是一个很好的“名字”近似值。 它允许foo
和foo-bar-baz
,但不是像----
或foo----bar----
这样的东西。
要限制-
你可以添加一个负面预测,其中数字3
比你想要允许的最大数量多一个
/^(?!(?:[a-z]*-){3,})(?=-*[a-z]-*[a-z])[a-z-]{2,100}$/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.