Как создать регулярное выражение для следующего условия? - PullRequest
2 голосов
/ 08 февраля 2010

Я создавал регулярное выражение для следующего условия

строка может содержать любой алфавит, цифру и 'и? строка должна начинаться с буквы или цифры

Например:

adsfj
asfj's
jfkd'sdf?
df
ds?
afjdk?

все действительны

Я использую C # 2.0

Я пробовал что-то подобное

  ^[a-zA-Z0-9]+[']\*[a-zA-Z0-9]\*[?]\*[a-zA-Z0-9]\*$

который не решил проблему .... есть идеи ..?

Ответы [ 3 ]

5 голосов
/ 08 февраля 2010

Это проще, чем вы сделали: ^[a-zA-Z\d][a-zA-Z\d'?]*$

^            # Start of string anchor.
[a-zA-Z\d]   # First character is a letter or a digit.
[a-zA-Z\d'?] # Subsequent characters are letters, digits, apostrophes or question marks...
*            # ...repeated any number of times.
$            # Until the end of the string.

Если вы разрешите подчеркивание с другими персонажами, его можно упростить до: ^\w[\w'?]*$

1 голос
/ 08 февраля 2010

Как насчет:

Regex rx = new Regex(@"^[a-z\d][a-z\d'?]*$", RegexOptions.IgnoreCase);

Это будет соответствовать, как вы говорите: Начинается с: любой буквы алфавита или цифры. До конца он может содержать: любую букву из алфавита, цифру или '? символы.

0 голосов
/ 08 февраля 2010
^[a-zA-Z0-9][a-zA-Z0-9?']*$

Это позволило бы даже строки длины один. Чтобы указать минимальную и максимальную длину, измените регулярное выражение на:

^[a-zA-Z0-9][a-zA-Z0-9?']{minlen-1,maxlen - 1}$

Например, следующие строки допускают строки длиной от пяти до 10.

^[a-zA-Z0-9][a-zA-Z0-9?']{4,9}$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...