正在玩正则表达式以从字符串中删除所有数字
我想到了这个:
/([^0-9])$/
但它只有在字符串看起来像这样的情况下才有效,例如 Name123 但是如果你输入 Name123Name 比它不起作用?
不明白为什么?
有任何想法吗?
最好的问候, 伊利亚
您的正则表达式在字符串末尾找到一个字符不在其中。[0-9]
要检查字符串中是否有数字,请删除锚点:
/[0-9]/
要检查所有字符是否不是数字,请添加字符串锚的开头:
/^[^0-9]+$/
这种方法称为黑名单 - 您不想允许的字符列表。请注意,通常最好创建一个白名单 - 列出您确实希望允许的字符。
删除$
末尾的,因为它匹配字符串的结尾。您也可以使用\d
匹配数字而不是[0-9]
取决于您使用的语言。
所以在你的例子/[0-9]$/
中匹配 Name123 因为 123 出现在字符串的末尾,因此匹配$
锚。但在另一个示例 Name123Name 中,$
锚点不匹配,因为数字位于字符串的中间。