字符类中的 Javascript 正则表达式无效范围

标签 javascript regex

我正在使用从 regexlib 获得的正则表达式模式来验证相对 URL。在他们的网站上,您可以 test模式以确保它符合您的需要。在他们的网站上一切都很好,一旦我在我的网站上使用该模式,我就会收到错误消息:

Invalid range in character class

我知道这个错误通常意味着连字符被错误地用于表示范围并且没有正确转义。但在这种情况下,因为它可以在他们的网站上运行,所以我很困惑为什么它不能在我的网站上运行。

var urlRegex = new RegExp('^(?:(?:\.\./)|/)?(?:\w(?:[\w`~!$=;\-\+\.\^\(\)\|\{\}\[\]]|(?:%\d\d))*\w?)?(?:/\w(?:[\w`~!$=;\-\+\.\^\(\)\|\{\}\[\]]|(?:%\d\d))*\w?)*(?:\?[^#]+)?(?:#[a-z0-9]\w*)?$', 'g');

注意: 如果您要从他们的站点(使用上面的链接)测试正则表达式,请务必将 Regex Engine 下拉列表更改为 Client-side Engine Engine 下拉列表到 Javascript

最佳答案

-放在字符类的结尾开头使用两个反斜杠string

中进行正则表达式转义

因为您使用的是字符串,所以您需要为每个特殊字符使用两个反斜杠..


注意

查看 this关于 SO 的回答解释了何时使用单反斜杠或双反斜杠来转义特殊字符

关于字符类中的 Javascript 正则表达式无效范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16572123/

相关文章:

regex - grep 正则表达式以一个词开头、结尾并包含一个词

javascript - 使用 Node.Js 模块,如何在同一模块中使用对象函数?

实例化自定义对象的 Javascript///<field type=?>

javascript - Angular 替代 $http

javascript - Handlebar.helper 的 View 无法使用 Controller 中的操作

java - 如何在 Java 中编写考虑到我要查找的字符串上下文的正则表达式?

regex - sed 条件替换变量

java - 无法替换包含特殊字符的字符串

javascript - 沿着 Canvas 上的一条线放置文本标签

c# - 密码的正则表达式