RegEx, чтобы сказать, не содержит ли строка определенный символ

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
34
задан Community 23 May 2017 в 12:30
поделиться

6 ответов

Вашим решением является половина права. Соответствие, которое Вы видите, для других символов. То, что Вы хотите сказать, является чем-то как "эй! Я не хочу видеть этот символ во всей строке".

В этом случае Вы делаете:

Regex.IsMatch("103","^[^0]*$")
51
ответ дан Jorge Ferreira 27 November 2019 в 16:21
поделиться

Шаблон [^0] будет соответствовать любому символу, который не является нулем. В обоих из Ваших примеров шаблон будет соответствовать первому символу ("1"). Чтобы протестировать, не содержит ли вся строка нулей, шаблон должен быть "^ [^0] * $". Это читает следующим образом: Запустите в начале строки, соответствуйте произвольному числу символов, которые не являются нулями, сопровождаемыми сразу к концу строки. Любая строка, содержащая нуль, перестанет работать. Любая строка, содержащая нули, передаст.

17
ответ дан Ken Paul 27 November 2019 в 16:21
поделиться

при поиске отдельного символа в строке regex походит на что-то вроде излишества. Почему не просто используют.IndexOf или.Contains?

7
ответ дан Kevin 27 November 2019 в 16:21
поделиться

Первый символ пределы синтаксического анализатора равняются "1", который верен для [^0] и также верен для [^&], поэтому это возвратит true в обоих из тех примеров.

4
ответ дан stephenbayer 27 November 2019 в 16:21
поделиться

Вы кладете свое отрицание на неправильное место. [^x] будет соответствовать чему-либо, что не является x. Если x находится в строке, строка все еще соответствует выражению, если существуют какие-либо другие символы также. Вместо этого Вы хотите соответствовать верный, если x там, и затем инвертируйте результат функции:

Not Regex.IsMatch("103", "0")

Not Regex.IsMatch("103&", "&")

Не то, чтобы с этими простыми примерами, нормальной Строкой. IndexOf () или Строка. Содержит (), был бы лучший выбор.

2
ответ дан Joel Coehoorn 27 November 2019 в 16:21
поделиться

Я столкнулся с этим вопросом, ища то же самое, но для JavaScript. Выражение выше не сработало в моем случае, но я наткнулся на приведенное ниже выражение, которое сработало. (На случай, если кто-то еще, ищущий решение для JavaScript, тоже окажется здесь.)

^ ((?! 0).) * $

Эта конструкция называется Negative Lookahead

2
ответ дан 27 November 2019 в 16:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: