Регулярное выражение для не алфавитов и не цифры - PullRequest
5 голосов
/ 18 ноября 2009

Пожалуйста, предоставьте решение для написания регулярного выражения в C # .NET следующим образом: Я бы потребовал RegEx для не алфавитов (от a до z; от A до Z) и не чисел (от 0 до 9). Имею ввиду обратный способ получения регулярных выражений, отличных от букв и цифр (от 0 до 9).

Просьба предложить решение для того же.

Ответы [ 3 ]

18 голосов
/ 18 ноября 2009

Вы можете использовать класс отрицанных символов здесь:

[^a-zA-Z0-9]

Выше регулярное выражение будет соответствовать одному символу, который не может быть латинскими буквами в нижнем или верхнем регистре или цифрой.

^ в начале класса символов (часть между [ и ]) отрицает полный класс, так что он соответствует чему-либо , а не в класс, вместо нормального поведения класса персонажей.

Чтобы сделать его полезным, вам, вероятно, понадобится один из них:

  1. Ноль или более таких символов

    [^a-zA-Z0-9]*
    

    Звездочка (*) здесь означает, что предыдущая часть может повторяться ноль или более раз.

  2. Один или несколько таких символов

    [^a-zA-Z0-9]+
    

    Знак плюс (+) здесь означает, что предыдущая часть может быть повторена один или несколько раз.

  3. Полная (возможно пустая) строка, состоящая только из таких символов

    ^[^a-zA-Z0-9]*$
    

    Здесь символы ^ и $ имеют значение якоря , соответствующие началу и концу строки соответственно. Это гарантирует, что вся строка состоит из символов, не входящих в этот класс символов, и никакие другие символы не идут до или после них.

  4. Полная (непустая) строка, состоящая только из таких символов

    ^[^a-zA-Z0-9]+$
    

Если немного поработать, это не гарантирует (и не может) гарантировать, что вы не будете использовать другие символы, возможно, из других сценариев. Строка аеΒ будет полностью допустимой с указанным выше регулярным выражением, поскольку она использует буквы греческого и кириллического алфавита. Кроме того, есть и другие подводные камни. Строка á будет проходить над регулярным выражением, тогда как строка ́a не будет (потому что она строит букву á из буквы a и объединяющую диакритическую метку).

Так что отрицаемые классы персонажей должны быть приняты с осторожностью время от времени.

Я также могу использовать цифры из других скриптов, если я хочу: ١٢٣: -)

Вы можете использовать класс символов

[^\p{L&}\p{Nd}]

если вам нужно позаботиться о вышеперечисленных вещах.

2 голосов
/ 18 ноября 2009

Для соблюдения местных настроек используйте:

[^[:alnum:]]
2 голосов
/ 18 ноября 2009

просто отрицаем класс:

[^A-Za-z0-9]

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