在javascript中,有没有办法将字母与其他字符区分开来?
我想用“你姐姐”来代替“你”。然而,像“youtube”这样的词必须保持不变。所以我决定用在javascript中,有没有办法将字母与其他字符区分开来?,javascript,regex,string,replace,Javascript,Regex,String,Replace,我想用“你姐姐”来代替“你”。然而,像“youtube”这样的词必须保持不变。所以我决定用 replace(/ you /, " your sister "); 但是,现在字符串“我爱你!”保持不变,任何单词you后面没有空格的字符串也保持不变。我想知道“you”后面的字符是否是字母。如果是,则保持不变;如果不是,则将其更改为“您的妹妹”。您需要单词边界字符\b s.replace(/\byou\b/g, 'your sister') 您正在查找\b(单词边界): 但是什么是切片?我想你是说
replace(/ you /, " your sister ");
但是,现在字符串“我爱你!”保持不变,任何单词you后面没有空格的字符串也保持不变。我想知道“you”后面的字符是否是字母。如果是,则保持不变;如果不是,则将其更改为“您的妹妹”。您需要单词边界字符
\b
s.replace(/\byou\b/g, 'your sister')
您正在查找
\b
(单词边界):
但是什么是切片?我想你是说
string.replace(/\byou\b/, "your sister")
\b
匹配单词边界–在单词字符(实际上是字母数字加下划线1)和非单词字符之间
因此,/\byou\b/
在不属于另一个单词时会匹配“you”
1这是出于“历史原因”:它使得与类似C的编程语言标识符中允许的常用字符集相匹配变得很容易。什么是“字母”?这个问题并不像随便一看听起来那么愚蠢:例如,许多语言将
7
视为一个数字,但也有正字法(例如)将其实际上视为一个字母。所以在这种情况下,你需要更准确地描述你的意思,这样答案就可以根据你的意思进行调整(你做得很好,但你的标题仍然很有启发性)
要回答实际问题,可以执行全局正则表达式替换,例如:
const replaced = input.replace(/\byou\b/g, 'your sister');
使用此选项,字符串“you”将被字符串“your sister”替换,但前提是该字符串周围有“单词边界”(空格、句子开头/结尾、符号等)
我们还需要使用
/…/g
修饰符(用于“全局匹配”),以便替换作用于“you”的所有实例,而不仅仅是第一个实例@torazaburo他们可能也在寻找关于如何使用它的有用链接或完整答案,因为\b
仅在真正的正则表达式调用=)中使用时才有意义,尽管可能使用了g
修饰符
const replaced = input.replace(/\byou\b/g, 'your sister');