【问题标题】:Regex - Removing Dollar Sign From Text Input正则表达式 - 从文本输入中删除美元符号
【发布时间】:2012-05-29 16:10:31
【问题描述】:

我有以下 onkeyup 命令来测试和删除字母逗号和美元符号:

onkeyup="if (/(?:[a-zA-Z]|\s|,|\$)+/ig.test(this.value)) this.value = this.value.replace(/(?:[a-zA-Z]|\s|,|\$)+/ig,'')"

它适用于除美元符号之外的所有内容。

有人可以帮帮我吗?

谢谢, 品种

【问题讨论】:

  • 这实际上对我来说似乎可以正常工作。但是正则表达式可以简单得多:/[a-z\s,$]/ig,除非我误解了你。 jsfiddle.net/skM5N/3
  • 为我工作...尝试将 this.value 转储到控制台并查看其中的内容。
  • 在没有测试的情况下运行替换可能会更便宜。
  • 看起来对我有用:jsfiddle.net/wb4zG
  • @Michael:另外,初步的if (...)检查是没有必要的......

标签: javascript html regex onkeyup


【解决方案1】:

如果您试图将任意字符串清理为一个数字,您将通过用空字符串替换所有不是数字的内容(假设您想要一个整数)来减少边缘情况。

this.value = this.value.replace( /[^0-9]/, '' );

【讨论】:

    【解决方案2】:

    HTML 将反斜杠解释为转义内联 html 字符串,而不是正则表达式。以下代码打印$

    <body onload='alert("\$");'> // prints '$', not '\$'
    

    您需要转义两次,或者将正则表达式移出内联 html 并移至函数中。

    我相信正确的答案是将\$替换为\\$,如下:

    onkeyup="if (/(?:[a-zA-Z]|\s|,|\\$)+/ig.test(this.value)) this.value = this.value.replace(/(?:[a-zA-Z]|\s|,|\$)+/ig,'')"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 2019-05-11
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多