我尝试匹配一个不以“t”开头的单词
例如
/^[^t]est$/.test('test') # false
/^[^t]est$/.test('best') # true
但是当我尝试将长度设置为 2 时,它不起作用:
/^[^t]{2,2}st$/.test('ttst') # false
/^[^t]{2,2}st$/.test('tbst') # false (should be true)
/^[^t]{2,2}st$/.test('bbst') # true
tbst
仅包含一个t
,因此不应匹配
谁能解释一下为什么?谢谢
最佳答案
正则表达式按书面方式工作:
/^[^t]{2,2}st$/
- ^ 断言字符串开头的位置
- [^t]{2,2} 匹配下面列表中不存在的单个字符 量词:{2,2} 正好 2 次li>
- t 文字字符 t(区分大小写)
- st 与字面上的字符 st 匹配(区分大小写)
- $ 在字符串末尾断言位置
您也不需要执行 {2,2},因为这是一个范围,您可以对 2 个匹配项执行 {2},或者对 1 至 2 个匹配项执行 {1,2}。
这个示例应该可以很好地说明该正则表达式中发生的情况。
如果您正在寻找解决方案:匹配任何不以 tt 开头的单词(区分大小写),您可以使用以下内容:
/^(?!tt)\w+$/
希望这有帮助。
关于javascript - 正则表达式 : Why this regex doesn't match "not starts with" two letter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29776741/