Я написал несколько регулярных выражений для веб-приложения ASP.NET на C# (3.5). Я ни в коем случае не являюсь продвинутым пользователем регулярных выражений. Я устраняю одну неполадку, которая меня совершенно сбивает с толку, почему она не работает. Тем более, что у меня есть аналогичные, которые работают нормально.
Вот подробности. Спасибо за ваше время и любезную помощь.
Мое приложение принимает два отдельных значения. Если два значения вместе соответствуют предопределенному набору правил, они сопоставляются с определенным значением.
Я определил некоторые правила как таковые (примечание: они просто созданы мной и не имеют никакого программного значения или значения):
Элемент 1: Cxxxx*####
Элемент 2: Czzzz*####
Для элемента 1:
Это означает, что эта последовательность должна начинаться с буквы «C». Следующие 4 символа (четыре X) являются буквенно-цифровыми. Звездочка означает, что это может быть («R» или «D»). Символы # означают, что это может быть последовательность из любых 4 буквенно-цифровых символов.
Для элемента 2:
Это означает, что эта последовательность должна начинаться с буквы «C». Следующие 4 символа (четыре Z) являются буквенно-цифровыми. Звездочка означает, что это может быть («R» или «D»). Символы # означают, что это может быть последовательность из любых 4 буквенно-цифровых символов.
Между двумя элементами X и Z просто означают, что последовательность из 4 символов не может быть одинаковой. Он должен быть уникальным между ними.
Таким образом, эти два элемента нарушают правило, поскольку «1491» повторяется в одном и том же месте последовательности.
Элемент 1: C1491D1234
Элемент 2: C1491D5678
Этот код вернет true, поскольку это должно быть правильно с учетом правил последовательности:
Элемент 1: C1491D1234
Элемент 2: C1599D5678
Этот код вернет true, поскольку с учетом правил последовательности все должно быть хорошо:
Элемент 1: C1491D1234
Элемент 2: C1599D1234
Это регулярное выражение, которое я использую для создания этого правила:
C([A-Za-z0-9]{4})[DdRr][A-Za-z0-9]{4}-C(?!\1)[DdRr][A-Za-z0-9]{4}
Это два элемента, которые я использую для проверки условия:
Элемент 1: C1491D1491
Элемент 2: C1000R4100
По какой-то причине мое регулярное выражение неверно и не возвращает true.
Вот как моя программа на C# видит последовательность: C1491D1491-C1000R4100
Для тестирования я использовал этот веб-сайт:
http://regexhero.net/tester/
Подробнее здесь: https://stackoverflow.com/questions/894 ... -correctly
Регулярное выражение C# работает неправильно ⇐ C#
Место общения программистов C#
-
Anonymous
1760289905
Anonymous
Я написал несколько регулярных выражений для веб-приложения ASP.NET на C# (3.5). Я ни в коем случае не являюсь продвинутым пользователем регулярных выражений. Я устраняю одну неполадку, которая меня совершенно сбивает с толку, почему она не работает. Тем более, что у меня есть аналогичные, которые работают нормально.
Вот подробности. Спасибо за ваше время и любезную помощь.
Мое приложение принимает два отдельных значения. Если два значения вместе соответствуют предопределенному набору правил, они сопоставляются с определенным значением.
Я определил некоторые правила как таковые (примечание: они просто созданы мной и не имеют никакого программного значения или значения):
Элемент 1: Cxxxx*####
Элемент 2: Czzzz*####
Для элемента 1:
Это означает, что эта последовательность должна начинаться с буквы «C». Следующие 4 символа (четыре X) являются буквенно-цифровыми. Звездочка означает, что это может быть («R» или «D»). Символы # означают, что это может быть последовательность из любых 4 буквенно-цифровых символов.
Для элемента 2:
Это означает, что эта последовательность должна начинаться с буквы «C». Следующие 4 символа (четыре Z) являются буквенно-цифровыми. Звездочка означает, что это может быть («R» или «D»). Символы # означают, что это может быть последовательность из любых 4 буквенно-цифровых символов.
Между двумя элементами X и Z просто означают, что последовательность из 4 символов не может быть одинаковой. Он должен быть уникальным между ними.
Таким образом, эти два элемента нарушают правило, поскольку «1491» повторяется в одном и том же месте последовательности.
Элемент 1: C1491D1234
Элемент 2: C1491D5678
Этот код вернет true, поскольку это должно быть правильно с учетом правил последовательности:
Элемент 1: C1491D1234
Элемент 2: C1599D5678
Этот код вернет true, поскольку с учетом правил последовательности все должно быть хорошо:
Элемент 1: C1491D1234
Элемент 2: C1599D1234
Это регулярное выражение, которое я использую для создания этого правила:
C([A-Za-z0-9]{4})[DdRr][A-Za-z0-9]{4}-C(?!\1)[DdRr][A-Za-z0-9]{4}
Это два элемента, которые я использую для проверки условия:
Элемент 1: C1491D1491
Элемент 2: C1000R4100
По какой-то причине мое регулярное выражение неверно и не возвращает true.
Вот как моя программа на C# видит последовательность: C1491D1491-C1000R4100
Для тестирования я использовал этот веб-сайт:
http://regexhero.net/tester/
Подробнее здесь: [url]https://stackoverflow.com/questions/8948986/c-sharp-regular-expression-not-firing-correctly[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия