假设我们有一个字符串:“单向有人” 我想将单词“一”替换为单词“二”。
注意:我不希望“某人”或“单向”更改。
我尝试使用str.replace(/ one / g,“ two”); 但是结果是“ Sometwo 2 two-way”
这不是预期的结果... 我想获得“某人两个单向”
任何帮助都将得到认可。谢谢。。。
答案 0 :(得分:1)
您也可以验证空格:
//var str = "Someone one one-way";
var str = "one one Someone one one-way one,one";
var replace='two';
//using lookahead and lookbehind
var result= str.replace(/(?<=[^a-zA-Z-]|^)one(?=[^a-zA-Z-]|$)/gm , "two");
console.log(result);
//result: two two Someone two one-way two,two
答案 1 :(得分:0)
eval('STR.SPLIT(" ONE ").JOIN(" TWO ")'.toLowerCase())
答案 2 :(得分:-1)
尝试此正则表达式:
\s(one)\s
您可以添加修改以区分大小写。
答案 3 :(得分:-1)
let input = "Someone one one-way"
output = input.split(" ").map((item)=> item ==='one'? 'two' : item).join(" ");
console.log(output)
答案 4 :(得分:-1)
您可以尝试以下方法:
.replace(/\bone\b(?!-)/g , "two")
\b
在单词边界上匹配。
(?!-)是一个否定的前瞻,因为如果后跟破折号,您不想替换一个。 \ b将破折号识别为单词边界。
当您遇到类似“ -one”的东西时,还有另一个陷阱。
如果这是一个问题,请使用它:
.replace(/[^-]\bone\b(?!-)/g , function(x){return x.substring(0,1) + 'two'})
理想情况下,您会使用否定的前瞻性,但是当前并非所有浏览器都支持此功能。