用占位符替换两个关键字的正则表达式,其中1可以是另一个关键字的一部分
Regex for replacing two keywords with placeholders where 1 could be part of another
以下URL的主要内容可供管理员编辑:http://www.vroomvroomvroom.com/terms-and-conditions/united-states/advantage/
有2个关键字需要替换为占位符。这些关键字可能出现0到n次。管理员在编辑内容时知道这些关键字。
任务是准备一个正则表达式,它可以用占位符替换这两个关键字,它们是:
- [COMPANY_NAME]例如:VroomVroomVroom.com或RentalCarmomma.com
- [CUSTOMER_SERVICE_EMAIL]例如:info@vroomvroomvroom.com或help@vroomvroomvroom.com
这里的挑战是第一个关键字可能是第二个关键字的一部分,这使得很难通过简单的替换函数来替换。谁能帮我准备这样一个正则表达式的javascript。
仅供参考:文本是HTML而不是简单的文本。
(更新)目前我使用的是:
$(".cms-editor").html().replace(/vroomvroomvroom.com/ig, "[COMPANY_NAME]").
这个没用因为它可以替换部分其他关键字[CUSTOMER_SERVICE_EMAIL]
然后我不能用占位符
var str = "vroomvroomvroom.com info@vroomvroomvroom.com";
str.replace(/(^|[^@])vroomvroomvroom'.com/ig, "$1[COMPANY_NAME]");
结果是……
[COMPANY_NAME] info@vroomvroomvroom.com
小提琴
解释:
-
^
匹配文本的开头 -
[^@]
匹配任何非@符号
所以两者结合|
(或操作符)将匹配文本的开头,或任何不是@符号的内容。
还需要在替换字符串中使用反向引用(" $1
[COMPANY_NAME]"),否则不是@符号的字符也将被替换。反向引用将此char再次放回。
还要注意,我转义了"。com"中的点,这个点匹配除了新行以外的任何字符,所以它必须用反斜杠转义。如果没有转义,它将匹配像"vroomvroomvroom_com"这样的字符串,其中下划线可以是任何其他字符。
相关文章:
- 使用“;这个“;JavaScript原型方法中的关键字
- delete关键字在全局变量上的不同行为
- 使用jQuery动态添加表并在其中动态添加行
- 匹配一个单词,其中候选人可以跨越顺序组(跨度)
- JavaScript 中的嵌套函数和 “this” 关键字
- 访问嵌套JSON对象的键,其中键是动态的
- 如何在javascript中获取一年中的周数,其中周日是一周中的第一天
- 如何在不使用 new 关键字的情况下从函数创建对象
- Angularjs使用“;这个“;promise内的关键字回调
- 重写需要javascript中带有import关键字的语法
- Regex,用于从字符串中筛选关键字
- 其中的用例标签'的声明
- Javascript 对象和 this 关键字
- 如何在不知道关键字的情况下访问javascript对象值
- 可以在Javascript中添加新的关键字吗
- PayPal按钮是否有一个简单的选项,其中金额基于一些用户输入
- Knockout observable没有观察到其中一个属性
- 将其中一个异步方法重写为使用promise的方法
- javascript中的这个关键字
- 用占位符替换两个关键字的正则表达式,其中1可以是另一个关键字的一部分