Регулярное выражение для разрешения только определенного набора символов - PullRequest
2 голосов
/ 15 сентября 2010

Мне нужна помощь в создании регулярного выражения для разбора строки в текстовом поле. В настоящее время у меня есть эти два метода javascript:

function removeIllegalCharacters(word) {
    return word.replace(/[^a-zA-Z 0-9,.]/g, '');
}

$("#comment").keyup(function() {
 this.value = removeIllegalCharacters(this.value);
}); 

Я бы хотел заменить свое /[^a-zA-Z 0-9,.]/g регулярное выражение на такое, которое будет принимать только следующий набор символов:

  • a-z
  • A-Z
  • 0-9
  • áéíóúü
  • ÁÉÍÓÚÜ
  • ñÑ
  • ;,.
  • ()
  • - +

Вероятно, это довольно просто, но у меня практически нет навыков регулярных выражений. Заранее спасибо.

Ответы [ 4 ]

5 голосов
/ 15 сентября 2010

Просто добавьте эти символы в.

function removeIllegalCharacters(word) {
    return word.replace(/[^a-zA-Z 0-9,.áéíóúüÁÉÍÓÚÜñÑ();+-]/g, '');
}
0 голосов
/ 15 сентября 2010

Пытались ли вы с: [^ a-zA-Z 0-9;,.

0 голосов
/ 15 сентября 2010

Если я правильно понял ваши требования, вы хотите разрешить только перечисленные символы и удалить остальные символы. Если это так, вы можете просто расширить свой класс char следующим образом:

function removeIllegalCharacters(word) {
    return word.replace(/[^a-zA-Z0-9áéíóúüÁÉÍÓÚÜñÑ;,.()]/g, '');
}
0 голосов
/ 15 сентября 2010
return word.replace(/[^a-zA-Z0-9áéíóúüÁÉÍÓÚÜñÑ\(\);,\.]/g, '');

Возможно, вам придется использовать шестнадцатеричную escape-последовательность (\ x ##) или escape-последовательность Unicode (\ u ####) для некоторых нестандартных букв, но это даст вам хорошее начало.Или немного упрощенно:

return word.replace(/[^\w\dáéíóúüÁÉÍÓÚÜñÑ\(\);,\.]/g, '');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...