将正则表达式字符串转换为javascript中的正则表达式对象

convert regex string to regex object in javascript

本文关键字:正则表达式 对象 javascript 字符串 转换      更新时间:2023-09-26

我正在从json对象中获取regex字符串(是的,它是动态的,并且将始终是字符串),我想用文本框值来测试它。

但即使我通过了有效的输入文本,它也不会通过regex条件

代码:

var pattern = "/^[A-Za-z's]+$/";
var str = "Some Name";
pattern = new RegExp(pattern);
if(pattern.test(str))
{
    alert('valid');
}
else
{
    alert('invalid');
}

Fiddle:-http://jsfiddle.net/wn9scv3m/

两个问题:

  • 您需要转义反斜杠
  • 您需要删除字符串开头和末尾的斜杠

更正代码:

var pattern = "^[A-Za-z''s]+$";
var str = "Some Name";
pattern = new RegExp(pattern);
if(pattern.test(str))
{
    alert('valid');
}
else
{
    alert('invalid');
}

http://jsfiddle.net/wn9scv3m/3/

使用regex-parser:

const parseRegex = require("regex-parser")
parseRegex("/^hi$/g")
// => /^hi$/g

这应该对您有效(jsfiddle:http://jsfiddle.net/wn9scv3m/9/):

var pattern = /^[('w)|('s)]+$/; // using / regex constructor...
var altPattern = "^[('w)|('s)]+$"; // using quotes and new RegEx() syntax...
var regex = new RegExp(altPattern);
var str = "Some Name";
if (str.match(pattern) != null && regex.test(str) != null) { // check using both methods
    alert('valid');
}
else {
    alert('invalid');
}

据我所见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions您正在组合两个方法来声明RegExp。如果您使用的是字符串变体,则不要在表达式前后包含"/"字符,例如:

var pattern = "^[A-Za-z's]+$";
pattern = new RegExp(pattern);

如果你更喜欢/regexp/格式,那么就不用引号了:

pattern = /^[A-Za-z's]+$/;

这应该能在中工作

var str1 = "SomeName"; //true
var str2 = "SomeName123"; //false
function MyRegex(val) { 
    var pattern = /^[A-Za-z's]+$/;
    var match = pattern.exec(val);
    return match !== null && match[0] === val;
} 
alert(MyRegex(str1));
alert(MyRegex(str2));