如何检查 JavaScript 字符串是否为 RegExp 格式,然后将其转换为 RegExp?
我找到了一种使用 RegExp 的方法,但规则太复杂,无法正确实现。
function str2Regex(str){
var rule = /\/(\\[^\x00-\x1f]|\[(\\[^\x00-\x1f]|[^\x00-\x1f\\\/])*\]|[^\x00-\x1f\\\/\[])+\/([gim]*)/;
var match = str.match(rule);
return match ? new RegExp(match[1],match[3]) : str;
}
Run Code Online (Sandbox Code Playgroud)
现在我正在使用/\/(.*)\/(?=[igm]*)([igm]*)/哪个有效。
最简单的方法,也可能是最正确的方法,是使用 try/catch :
try {
r = new RegExp(str);
} catch(error) {
// no good
}
Run Code Online (Sandbox Code Playgroud)
SyntaxError当字符串与格式良好的正则表达式不匹配时,您会得到 a 。
如果你想测试一个字符串,其值就像一个编译的正则表达式(例如"/\b=\b/g",你可以使用这样的函数:
function checkCompiledRegex(str) {
if (str[0]!='/') return false;
var i = str.lastIndexOf('/');
if (i<=0) return false;
try {
new RegExp(str.slice(1, i), str.slice(i+1));
} catch(error) {
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4720 次 |
| 最近记录: |