2014-01-24 5 views
0

Я хочу разрешить каждому персонажу в поле ввода, кроме^<>% *() # !? и для этого я использую эти ограничения. для проверки на стороне клиентаRegex pattern не работает

final String regexpattern = "/[^<>%*()#!?]/"; 

для серверной стороны

final Pattern pat = Pattern.compile("/[^<>%*()#!?]/"); 

, но он не работает

+0

Кажется мне ваше регулярное выражение будет работать, за исключением того, что возвращаемое значение True, означает, что вход является недопустимым, и значение False означает, что вход активен. – OGHaza

ответ

0

В стороне клиента шаблон должен быть

regexpattern = /^[^<>%*()#!?]*$/ 

сервер

final Pattern pat = Pattern.compile("^[^<>%*()#!?]*$"); 
+0

Если вы также не хотите символа '^', вы должны использовать '[^ <>% *() #!? ^]' – Robin

0

Только для одного символа вам нужно добавить «+» или «*» после этого.

0

Вы должны ^ и $ в шаблоне, чтобы указать начало и конец строки, в противном случае он будет только проверить, что есть по крайней мере один действительный символ в строке, не то, что все символы в строке являются действительными.

Также вам понадобится множитель для набора символов, в противном случае он будет соответствовать только строке длиной один символ. Чтобы разрешить ноль или более символов, вы используете *, и для разрешения одного или нескольких символов вы используете +. Вы также можете использовать диапазон, например {2,10} позволяет от 2 до 10 символов.

^ в начале набора должен сделать его отрицательным, поэтому для отказа ^ вам также понадобится его среди символов в наборе.

Косые черты - это разделители для литерала регулярных выражений. Либо вы пишете шаблон в виде строки, которую можно использовать для создания регулярных выражений объекта:

pattern = "^[^^<>%*()#!?]+$"; 

или записать его как регулярное выражение буквального, которое становится регулярным выражением объекта:

regex = /^[^^<>%*()#!?]+$/; 
-2

Некоторые из этих символов должны быть экранированы в регулярных выражениях.

Попробуйте это:

final String regexpattern = /[\^<>%*()#!?]+/ ; 


final Pattern pat = Pattern.compile("[\^<>%*()#!?]+") ; 
+0

Нет. У вас есть меньше специальных символов, когда вы находитесь в квадратных скобках (http://www.regular-expressions.info/charclass.html). – Robin

+0

После дальнейших испытаний выясняется, что это было просто ^, которое нужно было ускользнуть для получения правильных результатов. Сбежание других специальных символов по-прежнему работает, даже если это не нужно. – Beau