Как использовать регулярные выражения, чтобы убедиться, что пользовательский ввод не состоит только из специальных символов? - PullRequest
5 голосов
/ 06 сентября 2010

Как поставить проверку над полем, в котором не допускаются только специальные символы, это означает, что AB#,A89@,@#ASD разрешено, но @#$^& или # не разрешено.Мне нужен RegEx для этой проверки.

Ответы [ 3 ]

9 голосов
/ 06 сентября 2010
str.match(/^[A-Z#@,]+$/)

будет соответствовать строке, которая ...

  • ... начинается ^ и заканчивается $ приложенным шаблоном
  • ... содержит заглавные буквы A-Z (не соответствует строчным буквам)
  • ... содержит только специальные символы #, @ и ,
  • ... имеет не менее 1 символа (без пустой строки)

Если регистр не учитывается, вы можете добавить i в конце: (например, /pattern/i)

** ОБНОВЛЕНИЕ **

Если вам нужно проверить, содержит ли поле только специальные символы, вы можете проверить, содержит ли строка только символы, которые не являются словами или числами:

if (str.match(/^[^A-Z0-9]*$/i)) {
   alert('Invalid');
} else {
   alert('Valid');
}

Это будет соответствовать строке, которая содержит только не буквенно-цифровые символы. Пустая строка также приведет к недействительности. Замените * на +, чтобы разрешить использование пустых строк.

2 голосов
/ 06 сентября 2010

Если вы можете использовать «отрицательное совпадение» для вашей проверки, т. Е. Ввод в порядке, если регулярное выражение не соответствует, то я предлагаю

^\W*$

Это будет соответствоватьстрока, состоящая только из несловесных символов (или пустой строки).

Если вам нужно положительное совпадение, используйте

^\W*\w.*$

Это будет совпадение, если есть хотя бы один буквенно-цифровойсимвол в строке.

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

Я считаю, что то, что вы ищете, выглядит примерно так:

!str.match(/^[@#$^&]*$/)

Проверяет, что строка не содержит только символов, т.е.содержит хотя бы один символ, который не символ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...