将字符串中的方括号文字与JS正则表达式匹配时出错
Error matching square bracket literal in string with JS regex
我在用Javascript将字符串中的方括号与正则表达式匹配时遇到问题。我测试了下面的正则表达式,它对我有效:
"step_users[0][step][name]".match(/step_users'['d*']/)
这个正则表达式匹配子字符串"step_users[0]",但我真正需要匹配的是子字符串"step_users[0][step]"。我试着如下修改正则表达式,但对我来说失败了
/step_users'['d*']'[step']/
事实上,如果我加上第二个"[",它就会失败。所以,这也会失败:
"step_users[0][step][name]".match(/step_users'['d*']'[/)
为什么第一个方括号匹配"[",但第二个方括号失败?
你有一个零宽度的字符!
"[0][".length === 5
"[0][".charCodeAt(3) === 8203
8203是字边界字符,一个零宽度的空格字符。事实上,你把它夹在每一副牙套之间!
在获取数据时手动或动态删除它。
我发现这很简单。您的正则表达式本应有效。所以,我看了看它停止工作的地方。找到这些零宽度空间的一个简单技巧是沿着字符串移动箭头。
编辑:提交后一秒钟,我想到了一个简单的方法来删除它:
var destroyZWS = new RegExp(String.fromCharCode(8203), "g");
yourString.replace(destroyZWS, "");
这将创建一个正则表达式,该表达式全局搜索特定的ZWS字符,然后用空字符串替换每个出现的字符。
相关文章:
- java.net和javascript之间正则表达式的差异
- Grunt匹配正则表达式
- 不同浏览器中的空白字符正则表达式行为
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 调用正则表达式匹配的函数
- 使用正则表达式评估电子邮件地址时出现性能问题
- Javascript 正则表达式 : ^[^/s/]+[a-z]{1,}[0-9]*[-_]*[^/][
- JavaScript正则表达式文本与RegExp对象
- 正则表达式只允许 x 个整数
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 改进用于验证付款金额的正则表达式
- 正则表达式与数字中的第二个点匹配
- 键按正则表达式以查找具有负值的小数
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- Javascript正则表达式,删除除s之前的单引号外的所有单引号时出错
- 将字符串中的方括号文字与JS正则表达式匹配时出错
- 使用String.search(“sinh(2”):“”时出错;无效的正则表达式“”;
- 将本机正则表达式转换为带变量的RegExp对象时出错
- 不确定我的正则表达式哪里出错了