替换短语中除破折号以外的所有破折号
replace all dashes but dash in phrase
我正在尝试用空格替换字符串中的所有破折号,除非破折号在短语 "not-replace"
中。所以整个字符串就像
var str = "change-these-dashes-but-not-replace-that";
所以我可能会以"更改这些破折号但不替换它"结束
但是我想出的并不是与我不想替换它的短语中的破折号不匹配。我该如何修改?
.match(/-(^not-replace)/gi);
这是另一种方法(如果使用,ES5 中的map
可能会替换为 jQuery 中的$.map
):
str.split('not-replace').map(function(s) {
return s.replace(/-/g, ' ');
}).join('not-replace'); // "change these dashes but not-replace that"
甚至更短和(可能)更快的解决方案:
str.replace(/-|not-replace/g, function(s) { return s === '-' ? ' ' : s; });
最后一个将在所有浏览器中不断工作。
str.replace(/not-replace/, 'notXXXreplace').replace(/-/, ' ').replace(/notXXXreplace/, 'not-replace');
即首先通过将其更改为不包含破折号的不太可能的东西来保护not-replace
。然后替换所有破折号,并放回不太可能的字符串所在的not-replace
。
现代Javascript现在支持后看断言,因此相应地编辑我的旧答案。
您可以将此正则表达式与嵌套的前瞻和后视一起使用:
repl = str.replace(/-(?!(?<='bnot-)replace'b)/g, ' ');
//=> change these dashes but not-replace that
正则表达式演示
正则表达式详细信息:
-
-
:匹配-
-
(?!
:开始负前瞻-
(?<='bnot-)
: 前面必须加上单词not-
-
replace'b
: 匹配词replace
-
-
)
:结束负面展望
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 我如何找到一个句子中的所有空格并替换忽略它们
- 如何用更合适的内容替换document.write
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 用空格替换下划线PHP
- str.split(someString).join(someOtherString)是否等效于替换
- 使用javascript的图像替换循环
- window.location替换并传递URL历史记录条目中的变量
- 替换标记中的属性
- 指令的模板必须只有一个根元素:With restrict E&替换true
- 替换短语中除破折号以外的所有破折号
- Javascript 如果字符串包含空格,则用破折号替换空格
- 从所有单词中替换,即使用破折号分隔,第一个字符用大写[更简单的方法]
- 如何用
替换某些回车换行符后跟破折号 - 替换数据属性中的最后一个破折号值
- 用整数替换字母-"(破折号)用它
- 为什么不't这个简单的javascript替换将破折号改为斜杠
- Angular的小写,并将json数据中的空格替换为破折号
- 替换数组中所有元素中的em破折号