使用正则表达式在两个单词之间留出空格

时间:2014-04-29 14:24:14

标签: javascript regex

我需要阻止除逗号之外的特殊字符。所以我使用下面给出的代码。它正在工作,但它也消除了两个单词之间的空间。 fiddle

var chars =/[(,\/\w)]/i;
$('input').keyup(function(e) {
  var value = this.value;
  var char = value[value.length-1];
    if(char !== ' ' || value.length==1 || (value[value.length-2]!==' ' )){

  if (!chars.test(char)) {
      $(this).val(value.substring(0, value.length-1));
  }
    }
});

2 个答案:

答案 0 :(得分:2)

就可用性而言,在用户输入时操纵用户的输入可能非常令人沮丧。此外,如果用户输入的速度足够快,则无论如何都不起作用(如上文Daniel Knippers所述)

更好的选择是验证用户的输入,并让他们实时知道输入是否无效。

试试这段代码:

var regex =/^[\w\s\,]*$/i;
$('input').keyup(function(e) {

    var message = regex.test(this.value) ? "" : "Error";
    $('#message').html(message);
});

jsFiddle version

答案 1 :(得分:0)

据我了解,您希望在txt框中允许该空格 所以,

这是您的ANSWER

您需要在\w

之后添加空格
var chars =/[(,\/\w )]/i;
$('input').keyup(function(e) {
  var value = this.value;
  var char = value[value.length-1];
    if(char !== ' ' || value.length==1 || (value[value.length-2]!==' ' )){

  if (!chars.test(char)) {
      $(this).val(value.substring(0, value.length-1));
  }
    }
});

请注意我在\w之后添加了空格,因此正则表达式为var chars =/[(,\/\w )]/i;