【问题标题】:Regular expression - replace special characters, except dot正则表达式 - 替换特殊字符,点除外
【发布时间】:2013-06-15 21:01:31
【问题描述】:
$('#price').keyup(function(){
        $('#price').val($('#price').val().replace(/[_\W]+/g, "-"));
})

现场观看:http://jsfiddle.net/2KRHh/6/。

这会删除特殊字符,但我如何指定它不替换点?

【问题讨论】:

标签: javascript jquery html regex


【解决方案1】:

将其用于正则表达式:

 /[^\w.]|_/g

它读取不是字母数字(包括下划线)或点的任何字符,或是下划线。

更新
但这可能更具可读性:

/[^0-9a-zA-Z.]/g

【讨论】:

  • 我认为您的意思是在正则表达式中添加一个“\”:/([^\w.])|_/g 另外,您为什么要在[^\w.] 字符类周围添加一个捕获组?
  • 但这也替换了数字。这应该允许数字 0-9 和数字
  • @sigpwned:不需要捕获组。
  • @Horn:\w 表示任何是数字或字母或 _ 的字符,而字符类开头的 ^ 表示任何不是的字符其中,所以这不会替换数字。
【解决方案2】:

现在有点旧了,但如果有人仍然需要它,浮士德的回答对我不起作用(我试图更改文件名以在 URL 中使用它)所以这是我找到的解决方案:

preg_replace('/[^A-Za-z0-9.\-]/', '', $string);

【讨论】:

  • 重读问题,他们想替换特殊字符除了点,所以连字符必须去掉。
猜你喜欢
  • 2014-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多