JS正则需求:移除括号内以数字开头的内容(含括号)
搞定JS正则:移除括号内数字开头的内容
我来帮你解决这个正则问题!你之前写的正则有个关键误区——用了^和$这两个锚点,它们是用来匹配整个字符串的开头和结尾的,但你实际要匹配的是括号内部以数字开头的内容,所以这俩符号完全用错地方啦,自然匹配不到目标内容。
正确的正则写法
我们需要精准匹配「左括号开头,紧接着是数字(允许前面带空格),然后是任意内容直到对应的右括号」的整个块,正则可以写成:
/\(\s*\d.*?\)/g
拆解正则逻辑
\(:转义匹配左括号(因为(在正则里是特殊元字符)\s*:匹配0个或多个空白字符,兼容括号内开头可能带空格的情况(比如( 12:30am...))\d:匹配任意数字,对应你要求的「括号内以数字开头」.*?:非贪婪模式匹配任意字符,这样会在遇到第一个)就停止,避免误匹配多个括号块\):转义匹配右括号g:全局匹配标志,处理字符串里多个符合条件的括号块
修正后的代码
把你的代码替换成下面的版本,就能得到你想要的输出:
var str1 = "String 1 (12:30am - 5:00pm)"; var str2 = "String 2 (Parentheses) (3:00am - 3:10am)"; console.log( str1.replace(/\(\s*\d.*?\)/g, '').trim() + "\n" + str2.replace(/\(\s*\d.*?\)/g, '').trim() );
实际运行结果
执行后会输出:
String 1 String 2 (Parentheses)
完全符合你的预期!
内容的提问来源于stack exchange,提问作者gene b.
相关产品推荐
相关产品推荐

