У меня возникают проблемы с шаблоном Java. Это моя картина:Регулярное выражение первого символа не соответствует
"^[\\p{L}\\p{Digit}~._-]+$"
Это соответствует любой букве в US-ASCII, цифры, специальные символы, в основном все, что не будет карабкаться в URL.
Я хотел бы найти первую букву в слове, которая не соответствует этому шаблону. В принципе пользователь отправляет текст в качестве ввода, и я должен его проверять и выдавать исключение, если я нахожу незаконный символ.
Я попытался отрицать этот шаблон, но он не скомпилировался должным образом. Также find()
ничего не помогло.
Юридический ввод будет hello
, тогда как ?hello
не должно быть, и мое исключение должно указывать на то, что ?
не является правильным.
Я бы предпочел предложение, используя Java Matcher, Pattern или что-то, используя util.regex
. Это не необходимость, но проверка каждого символа в строке индивидуально не является решением.
Edit: я придумал лучше регулярное выражение, чтобы соответствовать невыполненным символам URI
'!"? Hello ".subString (0,1) .matches ("^[\\ p {L} \\ p {Digit} .'-.'_] + $ ")'? – Ferrybig
Можете ли вы поделиться каким-то кодом с тем, что вы пытаетесь сделать? Пытается дезинформировать параметры GET/POST? Или весь URL? – Garfield
Зачем использовать 2 '' 'и' .' в одном классе символов? Кроме того, '' -.' создает диапазон (и соответствует ''() * +, -. '), Это специально? BTW, попробуйте 'if (str.matches (" [^ \\ p {L} \\ p {Digit} .'_-]. * ")) {/ * Ошибка! * /} ' –