пожалуйста, кто-нибудь может помочь мне преобразовать этот шаблон регулярного выражения из JavaScript в C # - PullRequest
0 голосов
/ 15 июня 2011

пожалуйста, кто-нибудь может мне помочь преобразовать этот шаблон регулярного выражения из javascript в c #

 var phonePattern = /^(([^\.\-\,a-wy-z]([\(]?(\+|[x])?\d+[\)]?)?[\s\.\-\,]?([\(]?\d+[\)]?)?[\s\.\-\,]?(\d+[\s\.\-\,]?)+[^\.\-\,a-z])|((\+|[x])?\d+))$/i

Мне нужно проверить номер телефона. Я возьму значение из текстового поля и сравню его с шаблоном регулярных выражений. Мне нужно преобразовать этот шаблон специально, потому что этот шаблон будет работать почти с большинством телефонных моделей страны, таких как Великобритания, США, евро, индия и т. д.

это мой код c #

Regex REphone = new Regex(@" c# pattern here");
if (REphone.IsMatch(TextBox_Phone.Text)) {
    // ...
} else {
    // ...
}

Ответы [ 2 ]

3 голосов
/ 15 июня 2011
new Regex(@"^(([^\.\-\,a-wy-z]([\(]?(\+|[x])?\d+[\)]?)?[\s\.\-\,]?([\(]?\d+[\)]?)?[\s\.\-\,]?(\d+[\s\.\-\,]?)+[^\.\-\,a-z])|((\+|[x])?\d+))$",
        RegexOptions.IgnoreCase);

Сам шаблон такой же, но в кавычках между @", " вместо /, /.

RegexOptions.IgnoreCase делает сопоставление без учета регистра, чтоявляется эквивалентом флага i в конце вашего литерала регулярного выражения JavaScript.

1 голос
/ 15 июня 2011

JavaScript ограничивает регулярное выражение, используя /, а C # не использует разделители (вы передаете его как строку, так что технически можно сказать, что он ограничен двойными кавычками ").

Также,в строках C # помните, что вы должны избегать обратной косой черты от \ до \\.

Таким образом, ваше выражение регулярного выражения будет выглядеть так -

"^(([^\\.\\-\\,a-wy-z]([\\(]?(\\+|[x])?\\d+[\\)]?)?[\\s\\.\\-\\,]?([\\(]?\\d+[\\)]?)?[\\s\\.\\-\\,]?(\\d+[\\s\\.\\-\\,]?)+[^\\.\\-\\,a-z])|((\\+|[x])?\\d+))$"

Если вы собираетесь передать его вв виде строкового литерала (используя @ перед ним), вам не нужно экранировать обратную косую черту.

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