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