Jitender
Jitender

Reputation: 7971

allow space between two word using regular expression

I need to block special character except comma. So I am using code given below. Its is working but it is also removing space between two words. 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));
  }
    }
});

Upvotes: 2

Views: 1315

Answers (2)

Jonathan Benn
Jonathan Benn

Reputation: 3569

In terms of usability, manipulating the user's input as they're typing can be very frustrating. In addition, if the user types fast enough it doesn't work anyway (as mentioned by Daniel Knippers, above)

A better bet would be to validate the user's input and let them know in real-time if the input is invalid.

Try this code:

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

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

jsFiddle version

Upvotes: 2

anni
anni

Reputation: 288

as far as i am understood, you wants that space should be allowed in txt box so,

here is your ANSWER

you need to add space after \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));
  }
    }
});

please note that i have added space after \w, so the regexp is var chars =/[(,\/\w )]/i;

Upvotes: 0

Related Questions