2013-07-17 5 views
1

Я пытаюсь написать регулярное выражение для имени, которое начинается с буквы, а также может содержать пробелы, цифры в строке.Regex для имени следует начинать с буквы

В настоящее время я пользуюсь ^(?=.*[a-zA-Z].*)([a-zA-Z0-9' ]{1,50})$.

Но он принимает строку типа «1125151asdgvhavdg». то есть он принимает числа при старте.

Моя строка должна выглядеть следующим образом

ads564564545456 fdsf78

+0

любого примера входного сигнала, который принимать? – Ehsan

+0

это может быть так: a123ajdbhbd – user1926319

+0

Что у вас есть '. *' Для вашего утверждения? – zerkms

ответ

5

просто:

^([a-zA-Z][a-zA-Z0-9' ]{0,49})$ 

Вам не нужно каких-либо утверждений здесь

+0

Спасибо, что это работает :) – user1926319

+1

@ user1926319, если он работает, примите ответ, установив отметку после него! –

0

Вы можете использовать следующий код:

^([a-zA-Z\s][a-zA-Z0-9]{1,50})$

Это регулярное выражение начинается с символов и позволяет пробелы и цифры.

0

Вы можете выразить это кратко, как это:

^(?i)[a-z][a-z\d ]{0,49})$ 
0

Если вы не 100% уверены, что там будет всегда только Ascii буква будет совпадающей, то вы должны взглянуть на Unicode properties, например, для письма \p{L}.

\p{L} любые письма с любого языка.

or Unicode scripts, которые собирают буквы, необходимые для определенных языков.

Таким образом, ваше регулярное выражение будет выглядеть следующим образом: (. Цифра от нуля до девяти в любом сценарии, кроме идеографических)

^\p{L}[\p{L}\p{Nd}' ]{0,49}$ 

я заменил также 0-9 свойством \p{Nd}

Смежные вопросы