如何声明正则表达式的关联数组? 这不起作用
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 中,另一个在正则表达式中,仍然无法工作。如果表达式很小,也许肉眼可以手动转义 JS 和 Regex。我的大脑就是不能:)
例如,为了在 regex101.com 上使用经过测试的字符串,所有必需的字符串都应声明为“行”,如下所示:
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`,
];
最佳答案
用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 )
};
关于javascript,声明正则表达式的关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44749369/