2016-08-29 4 views
1

Я пытаюсь создать тест Regex в JavaScript, который будет проверять строку, чтобы содержать любого из этих символов:Регулярное выражение для символа & -. '

a...z A..Z 0..9 and & - . ' 

у меня есть это сделать, но не совпадает:

^[a-zA-Z0-9&.-] 

Полный код:

<field-validator type="regex"> 
     <param name="expression">^[a-zA-Z0-9&.-]+$</param> 
     <param name="caseSensitive">false</param> 
     <message key="format.name" /> 
    </field-validator> 
+0

Вы имеете в виду, что он должен соответствовать первому регулярному выражению, но не второму? –

+0

С чего начинается ваша строка? – chris85

+2

Итак, вы хотите совместить '& -. '': тогда почему вы ищете' a-zA-Z0-9', и почему бы вам не перечислить одну цитату? Кажется тривиальным, что вы должны удалить эти символы и добавить цитату, или я полностью пропустил вашу точку. – trincot

ответ

2

Вы используете регулярное выражение внутри файла XML, так что лучше всего использовать CDATA блок для того, чтобы использовать буквенные & и ' символы внутри него. В любом из этих двух будет работать:

<param name="regex"><![CDATA[[a-zA-Z0-9'&.-]]]></param> 

или (если требуется совпадение полная строка):

<param name="regex"><![CDATA[(?s).*[a-zA-Z0-9'&.-].*]]></param> 

Поскольку вы используете <param name="caseSensitive">false</param>, вы можете даже опустить A-Z или a-z в шаблоне.

Обратите внимание, что (?s) включает режим DOTALL, так что . может соответствовать любому символу, включая символ новой строки.

2

это, кажется, работает:

[\&\-\.'] 

добавляя в буквы и цифры:

[a-zA-Z0-9\&\-\.'] 

(Обновлено после комментариев)

+0

'& -.' - селектор диапазона. Escape '-'. – Tushar

0

Если вы хотите проверить на входе содержитгде-нибудь один из этих символов, удалить ведущее ^ регулярного выражения. Это говорит о том, что любой из этих символов должен быть первым персонажем.

Кроме того, ваше регулярное выражение не включает символ '.

1

У вас должно быть \escape специальные символы.

[a-z0-9\-&\.'] 
+0

Обратите внимание, что если вы поместите дефис в качестве последнего символа, его не нужно экранировать. – trincot

Смежные вопросы