Совпадение с выражением без << или]]
Мне нужно соответствовать шаблону, только если <<
или же >>
или же ]]
или же [[
нет в строке.
Если присутствует какой-либо из этих специальных символов, совпадение должно быть равно нулю, иначе оно должно совпадать.
Например, у меня есть выражение Stackru
который должен вернуться как матч, но если у меня есть Stack]]over<<flow
Я не должен получить правдивый ответ. Следующий шаблон, к сожалению, не работает:
/^(\[\[)|(\]\])|(\<\<)|(\>\>)
Спасибо
1 ответ
Решение
Используйте следующее регулярное выражение и отрицайте результат:
<<|>>|\]\]|\[\[
Вот живой пример:
var regex = /<<|>>|\]\]|\[\[/;
var strings = [
"Stackru",
"Stack]]over<<flow"
];
for(var i=0; i<strings.length; i++) {
console.log(!regex.test(strings[i]));
}
Если вы не можете отменить результат (например, при использовании Angular's ng-pattern
), вы также можете использовать негативный взгляд:
^((?!<<|>>|\]\]|\[\[).)*$
Вот живой пример:
var regex = /^((?!<<|>>|\]\]|\[\[).)*$/;
var strings = [
"Stackru",
"Stack]]over<<flow"
];
for(var i=0; i<strings.length; i++) {
console.log(regex.test(strings[i]));
}