繁体   English   中英

RegEx在javascript中使用特殊字符的名称

[英]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]+)*$/

看起来像是一个很好的“名字”近似值。 它允许foofoo-bar-baz ,但不是像----foo----bar----这样的东西。

要限制-你可以添加一个负面预测,其中数字3比你想要允许的最大数量多一个

/^(?!(?:[a-z]*-){3,})(?=-*[a-z]-*[a-z])[a-z-]{2,100}$/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM