【问题标题】:Replacing alpha characters and spaces in string with jQuery用jQuery替换字符串中的字母字符和空格
【发布时间】:2013-09-25 08:34:29
【问题描述】:

我有一个只允许数字的字符串

$(this).val($(this).val().replace(/([a-zA-Z])/g, ""));

如何添加一个空格,以便在一个字符串中以相同的方式替换为“”?

【问题讨论】:

标签: javascript jquery replace


【解决方案1】:

要仅匹配非数字,您可以使用[^0-9] 而不是[a-zA-Z](这称为negated character class)。

如果您希望输入仅允许数字,使用 HTML5 您可以简单地使用<input type="number">。如需更广泛的支持,有很多 JavaScript 解决方案,请查看 cmets 中建议的 How to allow only numeric (0-9) in HTML inputbox using jQuery?

【讨论】:

  • 如果用户键入文本,您的链接可以正常工作,但如果用户粘贴文本,则链接会失败。
  • @schlingel 在那个链接上有很多不同的解决方案,但看起来它们确实都在使用不同的键事件而不是input 事件。我编辑了你的小提琴:jsfiddle.net/7rSVb/3
【解决方案2】:

只需将空格添加到您的正则表达式:

  "asfasd asdf asdf".replace(/([a-zA-Z ])/g, "");

产量:

  ""

编辑: 我误解了你的问题。如果您想阻止除数字之外的所有输入,请使用此正则表达式:

function removeNotAllowedChars($input) {
   $input.val($input.val().replace(/[^0-9]/g, ''));
}

$('#myText')
   .keyup(function() {
     var $input = $(this);
     removeNotAllowedChars($input);
   })
   .change(function() {
     var $input = $(this);
     removeNotAllowedChars($input);
   });

如果用户键入字符并且在焦点更改后粘贴输入,则使用这些脚本会立即删除输入。在这里试试:JSFiddle

【讨论】:

  • 那太好了,谢谢,但只是想一般来说这样会更容易阻止空格键。这是我的函数 $('*[data-type-validation="numeric"]).each(function (index, value) { $(this).change(function () { $(this).val($( this).val().replace(/([a-zA-Z ])/g, "")); }) });请问有什么想法吗?
【解决方案3】:

使用\s - 匹配单个空白字符,包括空格、制表符、换页符、换行符。相当于

Regex Guide

【讨论】:

    猜你喜欢
    • 2015-07-16
    • 2013-05-09
    • 2012-09-04
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    相关资源
    最近更新 更多