首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Javascript检查正则表达式中的单数反斜杠?

如何使用Javascript检查正则表达式中的单数反斜杠?
EN

Stack Overflow用户
提问于 2018-05-14 16:20:29
回答 1查看 746关注 0票数 2

最近,我问了一个问题,问我在Javascript中使用RegExp构造函数时遇到的一个错误,这个构造函数带有lookbehind断言。

我想做的是,检查一个大于5的数字输入,它前面有一个反斜杠的奇数数,换句话说,它前面没有转义反斜杠。

下面是一个例子。

代码语言:javascript
复制
\5              // match !
\\5            // no match !
\\\5           // match!

我在网上找到的Regex是

代码语言:javascript
复制
(?<!\\)(?:\\{2})*\\(?!\\)([5-9]|[1-9]\d)

但是这里的问题是,(?<!\\)会导致javascript抛出一个错误,regex组无效。

有办法解决这个问题吗?

最后,我知道我当前的正则表达式在检测大于5的数字时也可能有错误,例如\55将不匹配。我很感谢你的帮助。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-14 16:27:23

JS不支持后置查找(至少不是所有主流浏览器都支持),因此出现了错误。你可以试试:

代码语言:javascript
复制
(?:^|[^\\\n])\\(?:\\{2})*(?![0-4]\b)\d+

或者,如果您关心十进制数:

代码语言:javascript
复制
(?:^|[^\\\n])\\(?:\\{2})*(?![0-4](?:\.\d*)?\b)\d+(?:\.\d*)?

现场演示

注意:如果没有多行文本,则不需要\n

Regex击穿

  • (?:非捕获组的开始
    • ^开行
    • |
    • [^\\\n]只匹配一个反斜杠

  • 非捕获组的)
  • \\(?:\\{2})*匹配偶数后的反斜杠
  • (?![0-4](?:\.\d*)?\b)以下数字不应小于5(关心十进制数)
  • \d+(?:\.\d*)?匹配一个数字

JS代码:

代码语言:javascript
复制
var str = `\\5
\\\\5
\\\\\\5
\\\\\\4
\\4.
\\\\\\6
`;

console.log(
  str.match(/(?:^|[^\\\n])\\(?:\\{2})*(?![0-4](?:\.\d*)?\b)\d+(?:\.\d*)?/gm)
)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50334881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档