在javascript中,有一种方法可以区分字母和其他字符吗?

In javascript, is there a way to distinguish letters from other characters?

本文关键字:字符 其他 方法 javascript 一种      更新时间:2023-09-26

我想把"you"换成"your sister"。然而,像"youtube"这样的词必须保持不变。所以我决定使用

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

然而,现在字符串"I love you!"保持不变,以及任何不跟在单词you后面加空格的字符串。我想知道"你"后面的字符是不是字母。如果是,保持不变,如果不是,改成"your sister"

什么是"字母" ?这个问题并不像乍一看那么愚蠢:例如,许多语言将7视为数字,但在一些正字法(如Squamish)中,它实际上是一个字母。因此,在这种情况下,你需要更准确地描述你的意思,以便回答可以量身定制(你做得很好,但你的标题仍然是暗示性的)。

要回答实际的问题,您可以执行全局正则表达式替换,例如:

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

使用这个,字符串"you"将被字符串"your sister"替换,但只有当它被"word boundaries"包围时才会被替换。(空格、句首/句尾、符号等)。

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

需要字边界字符'b

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

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

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

slice是什么?我猜你是指

之类的东西
string.replace(/'byou'b/, "your sister")

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

所以/'byou'b/会匹配"you"当它不是另一个单词的一部分。


1这是出于"历史原因":它使匹配C中允许的常用字符集(如编程语言标识符)变得容易。