【问题标题】:Regex to remove letters, symbols except numbers正则表达式删除字母,除数字以外的符号
【发布时间】:2011-10-02 17:19:36
【问题描述】:

如何删除字母、符号(例如∞§¶•ªºº«≥≤÷)但保留纯数字 0-9,我希望能够在输入字段中不允许字母或某些符号,而只保留数字。

Demo.

如果您输入任何符号,如¡ € # ¢ ∞ § ¶ • ª 或其他,它仍然不会将其从输入字段中删除。你如何删除符号呢? \w 修饰符也不起作用。

【问题讨论】:

  • \w 不是修饰符,而是[A-Za-z0-9_]单词字符的快捷方式。

标签: javascript regex symbols


【解决方案1】:

您可以使用\D,这意味着非数字

var removedText = self.val().replace(/\D+/g, '');

jsFiddle.

您也可以使用HTML5 number input

<input type="number" name="digit" />

jsFiddle.

【讨论】:

  • 可能想要替换的不仅仅是找到的第一个非数字 - 将正则表达式更改为 /\D+/
  • 不应该是/\D+/g吗?
  • /\D+/g/\D/g 的效果相同。
  • 我发现数字输入的小提琴没用:a)它包括用于删除非数字的 javascript 和 b)如果上面的 js 被删除,它(对我来说)没有任何作用来删除非数字
  • @Pere 您仍然需要自己验证它。它确实为您提供了增加/减少数字的箭头。
【解决方案2】:

如果你想要浮动,请使用/[^0-9.,]+/

【讨论】:

  • 如果你想要一个可以包含浮点值的字符串 ;)
  • 那个“,”是什么意思?
  • @sbk 在某些地区他们使用逗号而不是点来标记小数位:)
  • 也否定 /[^-0-9.,]+/
  • @KlemenTusar 我用“245k”试过这个但没有用..
【解决方案3】:

简单:

var removedText = self.val().replace(/[^0-9]+/, '');

^ - 表示不是

【讨论】:

  • var removedText = self.val().replace(/[^0-9]+/g, '');保留所有数字。尽管 8.10+3 会给出 8103... 不确定这是问题所要求的。
【解决方案4】:

试试下面的正则表达式:

var removedText = self.val().replace(/[^0-9]/, '');

这将匹配 0-9 区间内 (^) 的每个字符。

Demo.

【讨论】:

  • 我讨厌迟到 32 秒 :D
  • @Max,没问题。尽管如此,你是第一个获得投票的人:-)
【解决方案5】:

如果您只想保留数字,请使用 /[^0-9]+/ 而不是 /[^a-zA-Z]+/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 2014-01-10
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多