选择除单点和单点划线以外的所有非数字字符

时间:2018-03-09 15:36:08

标签: javascript regex

我正在寻找JavaScript中的正则表达式,它将选择除单个点和单个短划线之外的所有非数字字符。我试过[^0-9\.\-]+,但它没有选择多个点或短划线。因此,它应该选择..而不是.

我的用例是数字输入验证。用户可以键入任何数字或单点或单点划线。我将用空字符串替换无效输入。

1 个答案:

答案 0 :(得分:2)

您应该可以使用以下内容:

(?:[^0-9\.\-]|\.{2,}|-{2,})+

匹配不是数字,.-的字符,或两个或更多.-的序列。

将替换放在(?:non-capturing group)内,以便使用量词+重复它,而不会创建无用的捕获组。

请注意,您不必在角色类中转义.,也不必在角色类的第一个或最后一个位置转换-(?:[^0-9.-]|\.{2,}|-{2,})+应该像好。

Regex101 sample