Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Вашим решением является половина права. Соответствие, которое Вы видите, для других символов. То, что Вы хотите сказать, является чем-то как "эй! Я не хочу видеть этот символ во всей строке".
В этом случае Вы делаете:
Regex.IsMatch("103","^[^0]*$")
Шаблон [^0] будет соответствовать любому символу, который не является нулем. В обоих из Ваших примеров шаблон будет соответствовать первому символу ("1"). Чтобы протестировать, не содержит ли вся строка нулей, шаблон должен быть "^ [^0] * $". Это читает следующим образом: Запустите в начале строки, соответствуйте произвольному числу символов, которые не являются нулями, сопровождаемыми сразу к концу строки. Любая строка, содержащая нуль, перестанет работать. Любая строка, содержащая нули, передаст.
при поиске отдельного символа в строке regex походит на что-то вроде излишества. Почему не просто используют.IndexOf или.Contains?
Первый символ пределы синтаксического анализатора равняются "1", который верен для [^0] и также верен для [^&], поэтому это возвратит true в обоих из тех примеров.
Вы кладете свое отрицание на неправильное место. [^x]
будет соответствовать чему-либо, что не является x. Если x находится в строке, строка все еще соответствует выражению, если существуют какие-либо другие символы также. Вместо этого Вы хотите соответствовать верный, если x там, и затем инвертируйте результат функции:
Not Regex.IsMatch("103", "0")
Not Regex.IsMatch("103&", "&")
Не то, чтобы с этими простыми примерами, нормальной Строкой. IndexOf () или Строка. Содержит (), был бы лучший выбор.
Я столкнулся с этим вопросом, ища то же самое, но для JavaScript. Выражение выше не сработало в моем случае, но я наткнулся на приведенное ниже выражение, которое сработало. (На случай, если кто-то еще, ищущий решение для JavaScript, тоже окажется здесь.)
^ ((?! 0).) * $
Эта конструкция называется Negative Lookahead