在javascript中,有没有办法区分字母和其他字符?

时间:2015-05-16 18:48:11

标签: javascript regex string replace

我想用“你的妹妹”代替“你”。但是像“youtube”这样的词必须保持不变。所以我决定使用

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

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

4 个答案:

答案 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中允许的常用字符集,如编程语言标识符。