我想用“你的妹妹”代替“你”。但是像“youtube”这样的词必须保持不变。所以我决定使用
replace(/ you /, " your sister ");
然而现在字符串“我爱你!”保持不变,以及任何字符串,其中您没有后跟一个带有空格的字符串。我想知道“你”这个词后面的字符是否是一个字母。如果是,请保持不变,如果不是,请将其更改为“你的妹妹”。
答案 0 :(得分:6)
什么是“信”?这并不像听起来那么愚蠢:作为一个例子,许多语言将7
视为一个数字,但有一些拼写法实际上是一个字母。因此,在这种情况下,您需要描述您的意思,以便可以根据需要定制答案(您做得很好,但您的头衔仍然具有启发性。)
要回答实际问题,您可以进行全局正则表达式替换,例如:
var replaced = input.replace(/\byou\b/g, 'your sister');
使用它,字符串“you”将被“你的妹妹”取代,但前提是它被“单词边界”(空格,句子的开头/结尾,符号等)所包围。
我们还需要使用/.../g
修饰符(用于“全局匹配”),以便替换作用于“你”的所有实例,而不仅仅是第一个。
答案 1 :(得分:4)
您需要字边界字符\b
s.replace(/\byou\b/g, 'your sister')
答案 2 :(得分:2)
您正在寻找\b
(字边界):
slice(/\byou\b/, "your sister")
但是slice
是什么?我认为你的意思是
string.replace(/\byou\b/, "your sister")
答案 3 :(得分:2)
\b
匹配单词边界 - 在单词字符(实际上是字母数字加上下划线 1 )和非单词字符之间。
所以/\byou\b/
在不属于另一个词时会与“你”匹配。
1 这是出于“历史原因”:它可以很容易地匹配C中允许的常用字符集,如编程语言标识符。