【问题标题】:Javascript remove Regex DelimiterJavascript 删除正则表达式分隔符
【发布时间】:2013-06-22 06:09:42
【问题描述】:

我的 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 

有人知道我该怎么做吗?

谢谢

【问题讨论】:

  • 代码示例会很有用。
  • 一些代码,我们需要看看
  • @balajimca var json = { regex: "/hello/" } //由php生成, "hello".match(json.regex); //不工作,仅当字符串为“/hello/”时工作
  • 兄弟,你能用你的代码更新你的问题吗?不在评论区:)
  • 你应该接受 one 格式,否则你会遇到问题。我将向您展示一个示例:user1 尝试 /\/\//,user2 尝试 /\/\//gi 和 user3 \/\/(不带分隔符)。如果我们从开头和结尾去掉/,第三个用户就会有问题。

标签: php javascript regex json


【解决方案1】:

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

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\/"

【讨论】:

    【解决方案2】:
    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;
    

    【讨论】:

    • 我非常不想使用 eval。我尝试了新的 RegExp 类,但如果输入是“/hello/”,RegExp 将转义“/”,我需要一种方法来简单地删除它们。
    猜你喜欢
    • 2016-02-07
    • 1970-01-01
    • 2016-12-12
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    相关资源
    最近更新 更多