0

我的 PHP 代码根据用户输入生成 JSON。

在这个 JSON 中,我有一个带有分隔符的正则表达式字符串“/regex/gi”。

我将此发送给用户,我希望 javascript 基于该正则表达式测试字符串。但是由于我在字符串中有分隔符,所以它不起作用。

有时,我可以将正则表达式字符串接收为“regex”、“/regex/”或“/regex/gi” 那么有没有办法删除那些分隔符,或者在正则表达式中转换字符串。

我尝试使用“new RegExp”,但它转义了字符串,它不起作用。

这里有一些代码:

var json = {regex: "/hello/"}; //This code is generated by PHP
"hello".match(json.regex); //Test in javascript, not working, since the "/" are inside the regex and not used as delimiter 

有人知道我该怎么做吗?

感谢

4

2 回答 2

2

你可以正则表达式你的正则表达式(哇)

var reMeta = /(^|[^\\])\/(\w+$){0,1}/;
var json = {regex: "/hello\/slash\//gi"};

json.regex = new RegExp( json.regex.replace(reMeta,'$1') );
// after replace it looks like: "hello\/slash\/"
于 2013-06-25T13:04:05.843 回答
1
var json = {regex: "/hello/"};

"hello".match(eval(json.regex));//Simle way (bad practice, but will work)

更多推进方式:

var json = {regex: "hello"};
var reg = new RegExp(json.regex)
var matched = reg.exec("hello") != null;
于 2013-06-25T12:47:46.143 回答