javascript,声明正则表达式的关联数组

时间:2017-06-25 18:33:54

标签: javascript

如何声明正则表达式的关联数组? 这不起作用

var Validators = {

    url : /^http(s?)://((\w+\.)?\w+\.\w+|((2[0-5]{2}|1[0-9]{2}|[0-9]{1,2})\.){3}(2[0-5]{2}|1[0-9]{2}|[0-9]{1,2}))(/)?$/gm   

};

编辑:现在正在工作!

这在JS中有效(如C#中的@运算符)

url : `/^http(s?)://((\w+\.)?\w+\.\w+|((2[0-5]{2}|1[0-9]{2}|[0-9]{1,2})\.){3}(2[0-5]{2}|1[0-9]{2}|[0-9]{1,2}))(/)?$/gm`

然而,由于双重逃避仍然无效,一个在JS和其他在Regex中。如果表达式很小,也许裸眼可以为JS和Regex手动逃脱。我的大脑不能:)

例如,为了在regex101.com上使用经过测试的字符串,所有必需的字符串都应声明为' row'像这样:

var exp = String.raw`^(http(s?):\/\/)?(((www\.)?[a-zA-Z0-9\.\-\_]+(\.[a-zA-Z]{2,3})+)|(\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b))(\/[a-zA-Z0-9\_\-\s\.\/\?\%\#\&\=]*)?$`;



var strings = [
    String.raw`http://www.goo gle.com`,
    String.raw`http://www.google.com`,
    ];

2 个答案:

答案 0 :(得分:1)

你的正则表达式中有正斜杠。此符号需要进行转义,因为它应该表示表达式的开头和结尾。试试\/

答案 1 :(得分:1)

new RegExp()包裹它并转义斜杠

var Validators = {

    url : new RegExp( /^http(s?):\/\/((\w+\.)?\w+\.\w+|((2[0-5]{2}|1[0-9]{2}|[0-9]{1,2})\.){3}(2[0-5]{2}|1[0-9]{2}|[0-9]{1,2}))(\/)?$/gm ) 

};