正则匹配疑问:带变量的正则为何误匹配?如何修改匹配句号后缀?
正则匹配问题解决:匹配“ta”后跟句号的正确写法
你的问题出在正则里的.是正则元字符,它能匹配任意单个字符(除换行符),所以原正则会匹配字符串里“takes”中“ta”后面的“k”,导致误判返回true。
要解决这个问题,需要把.转义成普通的句号字符,有两种写法:
- 如果你用
RegExp构造函数,因为字符串里的反斜杠需要转义,所以要写双反斜杠:let regex = new RegExp("ta" + "\\.", "i") - 更简洁的正则字面量写法,直接用单反斜杠转义即可:
let regex = /ta\./i
测试验证:
let text = 'Paracetamol takes up to an hour to work. to ' // 构造函数写法 let regex1 = new RegExp("ta" + "\\.", "i") console.log(regex1.test(text)) // 输出 false,无匹配 // 字面量写法 let regex2 = /ta\./i console.log(regex2.test(text)) // 输出 false,无匹配 // 测试存在匹配的场景 let matchedText = 'This is ta. example' console.log(regex2.test(matchedText)) // 输出 true,正确匹配
内容的提问来源于stack exchange,提问作者crmarc
相关产品推荐
相关产品推荐

