Regex, чтобы проверить, содержит ли строка только буквы (нижние / прописные), цифры и некоторые специальные символы

360
user3541631

Строка, которую я получаю, используя readформу пользователя, может содержать:

  • буквы
  • чисел
  • _

Для другой строки правила те же, что и выше, плюс:

  • начинается только с букв

Я начинаю с этого:

if [[ $A = [a-z]* ]] 

но он проверяет, начинается ли строка строчными буквами,

0
попробуйте поставить $ в конце, чтобы указать конец строки. Frank Thomas 5 лет назад 0

1 ответ на вопрос

1
cpilko

Для первого случая это должно работать:

if [[ $A = \w+ ]] 

\wобразует "слово" символ, который включает в себя подчеркивание. Он может распознавать некоторые строки Юникода, которые могут быть недопустимыми, поэтому [A-Za-z0-9\\_]могут работать лучше, чем \wу вас.

Для второй попытки:

if [[ $A = ^[A-Za-z]\w+ ]]