javascript - 如何使用 javascript 中的正则表达式解决 "invalid quantifier"错误?

标签 javascript regex

我正在尝试将以下 URL 验证函数从我的 PHP 代码转移到我的 javascript 代码:

   this.validate_url = function(field)
    {
        var pattern = new RegExp("^((ht|f)tp(s?)\:\/\/|~/|/)?([\w]+:\w+@)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((/?\w+/)+|/?)(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?");
        var val = $("#" + field).val();

        return pattern.test(val);
    }

这给了我错误:

invalid quantifier ?w+=w+)?(&w+=w+)*)?

我该如何解决这个问题?

最佳答案

您要么需要转义字符串声明中的反斜杠:

var pattern = new RegExp("^((ht|f)tp(s?)://|~/|/)?(\\w+:\\w+@)?([a-zA-Z]{1}([\\w-]+\\.)+(\\w{2,5}))(:\\d{1,5})?((/?\\w+/)+|/?)(\\w+\\.\\w{3,4})?((\\?\\w+=\\w+)?(&\\w+=\\w+)*)?");

或者您使用 regular expression literal syntax /expr/flags :

var pattern = /^((ht|f)tp(s?):\/\/|~\/|\/)?(\w+:\w+@)?([a-zA-Z]{1}([\w-]+\.)+(\w{2,5}))(:\d{1,5})?((\/?\w+\/)+|\/?)(\w+\.\w{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?/;

您还应该尝试使用 non-capturing groups (?:expr)您不需要引用该组的匹配项。

关于javascript - 如何使用 javascript 中的正则表达式解决 "invalid quantifier"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1817011/

相关文章:

javascript - 如何将参数从 anchor 标记 onclick 传递到 document.ready 中的函数

regex - Perl 正则表达式中的反引号字符 ` 含义

javascript - Vue.js 消费 json

javascript - 如何使文本在页面加载时向右滑动?

python - 正则表达式:用另一种模式替换一种模式

PHP 与 JavaScript 正则表达式

Python 使用正则表达式提取 pandas 列中的部分字符串

regex - R 正则表达式 : extracting speaker in a script

javascript - reactjs 和呈现纯 HTML

javascript - 页面加载时会触发“触摸”事件。关于可能导致这种情况的原因有什么想法吗?