Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式,用于用占位符替换两个关键字,其中1可能是另一个关键字的一部分_Javascript_Html_Regex - Fatal编程技术网

Javascript 正则表达式,用于用占位符替换两个关键字,其中1可能是另一个关键字的一部分

Javascript 正则表达式,用于用占位符替换两个关键字,其中1可能是另一个关键字的一部分,javascript,html,regex,Javascript,Html,Regex,管理员可以编辑以下URL的主要内容: 它有两个关键字需要替换为占位符。这些关键字可能出现0到n次。管理员在编辑内容时知道这些关键字 任务是准备一个正则表达式,它可以用占位符替换这两个关键字,它们是: [公司名称]例如:VroomVroomVroom.com或rentalcaromma.com [客户服务电子邮件]例如:info@vroomvroomvroom.com或help@vroomvroomvroom.com 这里的挑战是第一个关键字可能是第二个关键字的一部分,这使得很难通过简单的替换功能

管理员可以编辑以下URL的主要内容:

它有两个关键字需要替换为占位符。这些关键字可能出现0到n次。管理员在编辑内容时知道这些关键字

任务是准备一个正则表达式,它可以用占位符替换这两个关键字,它们是:

  • [公司名称]例如:VroomVroomVroom.com或rentalcaromma.com
  • [客户服务电子邮件]例如:info@vroomvroomvroom.com或help@vroomvroomvroom.com
  • 这里的挑战是第一个关键字可能是第二个关键字的一部分,这使得很难通过简单的替换功能进行替换。有人能帮我准备这样一个javascript正则表达式吗

    仅供参考:文本是HTML而不是简单文本

    [更新]

    目前,我正在使用类似于:

    $(".cms-editor").html().replace(/vroomvroomvroom.com/ig, "[COMPANY_NAME]"). 
    
    这是没有用的,因为它可以替换其他关键字的一部分
    [客户服务电子邮件]
    ,然后我不能用它的占位符替换第二个关键字

    var str = "vroomvroomvroom.com info@vroomvroomvroom.com";
    str.replace(/(^|[^@])vroomvroomvroom\.com/ig, "$1[COMPANY_NAME]");
    
    结果是

    [公司名称]info@vroomvroomvroom.com


    说明:
    • ^
      匹配文本的开头
    • [^@]
      匹配任何非@符号的内容
    因此,这两个字符与
    |
    (或运算符)组合在一起将匹配文本的开头或任何非@符号的内容

    还需要在替换字符串中使用反向引用(“
    $1
    [COMPANY_NAME]”),否则非@符号的字符也将被替换。back引用再次将该字符放回原处


    还请注意,我对“.com”中的点进行了转义,该点与新行以外的任何字符都匹配,因此必须使用反斜杠对其进行转义。如果不转义,它将匹配“vroomvroomvroom\u com”这样的字符串,其中下划线可以是任何其他字符。

    能否改进标题?“特定问题的正则表达式”不是任何人都会搜索的东西。另外,你给我们的管理员链接也没有帮助。一旦网站上的内容发生了变化,你的问题的这一部分就变得毫无用处了。请帮助我们在问题中包含我们解决您问题所需的所有信息。第二,你能给我们展示一下示例输入,它们应该如何匹配,以及它们当前如何匹配吗?这是公共链接。对于管理员,特定div通过WISWIG编辑器转换为可编辑文本。关于不正确的匹配:如果[公司名称]为VroomVroomVroom.com且[客户服务电子邮件]为info@VroomVroomVroom.com然后变成信息[公司名称],这是错误的。如果先更换[客户服务电子邮件],也可能发生类似情况。谢谢。这有点奏效,但并不完全奏效。它用占位符替换包含关键字的完整行。请在以下位置尝试以下javascript:
    $(“#ContentMain”).html($(“#ContentMain”).html().replace(/(^.[^+)vroomvroomvroom\.com/ig,“[公司名称]”)
    @iMatoria我刚刚测试了你的小提琴,但我看不出问题,输出与我的类似。在我的示例中,源字符串是:
    str='一些初始文本VroomVroomVroom.cominfo@vroomvroomvroom.com一些结尾文本“
    ,输出为:
    str=”[COMPANY\u NAME]info@vroomvroomvroom.com一些结尾文本“
    。但是,我正在寻找的输出是:
    str='一些初始文本[公司名称]info@vroomvroomvroom.com一些结尾文字“
    。谢谢。我想差不多完成了。现在,[COMPANY_NAME]前面的字符被删除@iMatoria我更新了我的答案和小提琴,包括了一个解释。