0

正在玩正则表达式以从字符串中删除所有数字

我想到了这个:

   /([^0-9])$/

但它只有在字符串看起来像这样的情况下才有效,例如 Name123 但是如果你输入 Name123Name 比它不起作用?

不明白为什么?

有任何想法吗?

最好的问候, 伊利亚

4

2 回答 2

4

您的正则表达式在字符串末尾找到一个字符不在其中。[0-9]

要检查字符串中是否有数字,请删除锚点:

/[0-9]/

要检查所有字符是否不是数字,请添加字符串锚的开头:

/^[^0-9]+$/

这种方法称为黑名单 - 您不想允许的字符列表。请注意,通常最好创建一个白名单 - 列出您确实希望允许的字符。

于 2012-08-02T14:36:20.730 回答
1

删除$末尾的,因为它匹配字符串的结尾。您也可以使用\d匹配数字而不是[0-9]取决于您使用的语言。

所以在你的例子/[0-9]$/中匹配 Name123 因为 123 出现在字符串的末尾,因此匹配$锚。但在另一个示例 Name123Name 中,$锚点不匹配,因为数字位于字符串的中间。

于 2012-08-02T14:36:58.597 回答