如何声明正则表达式的关联数组? 这不起作用
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`,
];
答案 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 )
};