2015-05-16 50 views
2

我想用“你的妹妹”代替“你”。然而,像“youtube”这样的词必须保持不变。所以我决定使用在JavaScript中,有没有一种方法来区分其他字符的字母?

replace(/ you /, " your sister "); 

但是现在字符串“我爱你!”保持不变,以及任何字符串,其中没有后跟字符串的空格。我想知道“你”这个词后面的字是否是一个字母。如果是,请保持不变,如果不是,请将其更改为“您的妹妹”。

+0

str.replace(“you”,“your sister”); –

+0

@torazaburo他们可能也在寻找一个有用的链接或完整的答案如何使用它,因为'\ b'只能用于真正的正则表达式调用=) –

回答

6

什么是“字母”?这不像听起来那么愚蠢:作为一个例子,许多语言都把7当成一个数字,但是有一些拼写字母实际上是一个字母。因此,在这种情况下,您需要描述您的意思,以便可以根据您的要求定制答案(您在这方面做得很好,但标题仍然具有启发性)。

要回答的实际问题,你可以做一个全局正则表达式替换,如:

var replaced = input.replace(/\byou\b/g, 'your sister'); 

利用这一点,字符串“你”将被“你的妹妹”所取代,但只有当它的包围通过“词边界”(空格,句子的开始/结束,符号等)。

我们还需要使用/.../g修饰符(用于'全局匹配'),以便替换作用于“您”的所有实例,而不仅仅是第一个。

4

你需要单词边界字符\b

s.replace(/\byou\b/g, 'your sister') 
+1

虽然可能带有'g'修饰符 –

+0

是的,可能:) –

2

您正在寻找\b(字边界):

slice(/\byou\b/, "your sister") 

但什么是slice?我假定你的意思是这样

string.replace(/\byou\b/, "your sister") 
2

\b单词边界匹配 - 单词字符之间(实际上是字母加下划线)和非单词字符。

因此/\byou\b/会匹配“你”,当不是另一个词的一部分。


这是“历史原因”:它使人们容易平时一套用C允许像编程语言识别的字符相匹配。

相关问题