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

Sha*_*ggy 4 javascript regex

regex从json对象获取字符串(是的,它的动态,将始终是字符串)我想用文本框值测试它.

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

代码:

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

小提琴: - http://jsfiddle.net/wn9scv3m/

par*_*ent 13

两个问题:

  • 你需要逃避反斜杠.
  • 您需要删除字符串开头和结尾的正斜杠.

更正代码:

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

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


Ric*_*all 9

使用regex-parser

const parseRegex = require("regex-parser")

parseRegex("/^hi$/g")
// => /^hi$/g
Run Code Online (Sandbox Code Playgroud)


Der*_*rek 6

这应该适合你(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');
}
Run Code Online (Sandbox Code Playgroud)


Bog*_*Biv 5

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

var pattern = "^[A-Za-z\s]+$";
pattern = new RegExp(pattern);
Run Code Online (Sandbox Code Playgroud)

如果您更喜欢 /regexp/ 形式,请使用不带引号的形式:

pattern = /^[A-Za-z\s]+$/;
Run Code Online (Sandbox Code Playgroud)