正则表达式以更改字符串中的某些单词
regex to change certain words in a string
我正在尝试了解正则表达式。我以为以下内容会起作用,但不幸的是它不是。
我想做什么:
给定一个字符串str
(见下文(,我想用单词 gravel
替换任何不shade
或gravel
的单词。
str = "gravel shade water grass people water shade";
output = str.replace(/([^gravel|^shade])/g,' gravel ');
output
应该等于gravel shade gravel gravel gravel gravel shade
.我所拥有的已经足够接近了,但有点偏离。
您的([^gravel|^shade])
匹配并捕获任何未g
、r
、a
、v
、e
、l
、|
、^
的单个字符,并将其全部替换为 gravel
个字符。
您可以使用
/'b(?!(?:shade|gravel)'b)'w+'b/g
查看正则表达式演示
模式描述:
-
'b
- 前导词边界 -
(?!(?:shade|gravel)'b)
- 否定的展望,将排除匹配的整个单词shade
和gravel
-
'w+
- 1+字字符(属于[A-Za-z0-9_]
集( -
'b
- 尾随字边界。
var str = 'gravel shade water grass people water shade';
var result = str.replace(/'b(?!(?:shade|gravel)'b)'w+'b/g, 'gravel');
document.body.innerHTML = result;
以下是使用 split/join
和 array.map
解决您的问题的非正则表达式解决方案:
var str = "gravel shade water grass people water shade";
var repl = str.split(' ').map(function (w) {
return (w!='gravel' && w!= 'shade')?'gravel':w; }).join(' ')
document.writeln("<pre>" + repl + "</pre>")
//=> "gravel shade gravel gravel gravel gravel shade"
相关文章:
- 如何在Javascript中从字符串中提取某些单词
- 如何在PHP中获取特定的字符串单词
- 对字符串使用IndexOf来挑选某些单词
- 如何替换数据属性中的特定字符串单词
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- 我如何从字符串中选出第一个单词的第一个字母,然后再选出第二个单词
- Regex模式,用于检查字符串中每个单词的第一个字母(如果是Javascript中的大写字母)
- 类别自动完成jQuery中的单词级自定义筛选器,而不是子字符串
- 测试字符串中的多个单词
- 正则表达式以更改字符串中的某些单词
- 输出包含3个单词的字符串中的前2个单词
- Geoplugin字符串结果为德语单词/语言
- 如何知道找到的单词是字符串的一部分还是JavaScript中的函数调用
- 跳过用户输入的文本字符串中的特殊字符,并在 Javascript 中的每个单词后添加连字符
- 查找数组中最长的单词/字符串
- 使用 jQuery 在大写字母中制作特定的单词(字符串)
- 在 javascript 中使用嵌套的 for 循环返回单词字符串中重复最多的字母
- JavaScript RegEx新手-从三个单词字符串中选择中间单词
- 使用javascript确保给定的单词(字符串)都是大写字母
- 判断多单词字符串是否包含单词