Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中,有没有办法将字母与其他字符区分开来?_Javascript_Regex_String_Replace - Fatal编程技术网

在javascript中,有没有办法将字母与其他字符区分开来?

在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(单词边界): 但是什么是切片?我想你是说

我想用“你姐姐”来代替“你”。然而,像“youtube”这样的词必须保持不变。所以我决定用

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');