2016-12-16 5 views
0

У меня есть случай, когда мне нужно найти, если строка точно не соответствует слову с использованием регулярного выражения в javascript.Проверка строки - это не совсем другое слово, использующее regex

Я старался отрицательно смотреть.

var reg = /(?!(^Hello$))/ 
var a = "Hello"; 
var b = "something else"; 


console.log(reg.test(a)) // I need this to be false 
console.log(reg.test(b)) // I need this to be true 

Как я могу это достичь? В Javascript и консольный журнал дает true

+0

Возможный дубликат [Есть ли зЬгстр JavaScript()?] (Http://stackoverflow.com/questions/1179366/is- there-a-javascript-strcmp) –

+1

Исправить меня, если я ошибаюсь, но не можете ли вы просто использовать равенство строк здесь? –

+0

Это должно быть сделано с регулярным выражением. – prakash

ответ

0

Проблема в том, что вы не привязываете все регулярное выражение, поэтому оно может совпадать в любой точке входной строки. Он не будет соответствовать в начале, но он будет соответствовать после 'H', потому что нет строки, соответствующей (?!(^Hello$)), которая следует за 'H', тем самым удовлетворяя отрицательный внешний вид.

Чтобы сделать регулярное выражение делать то, что вы хотите, закрепить его:

var reg = /^(?!Hello$)/; 
+0

спасибо .. это работает. У нас есть файл конфигурации, где мы указываем регулярное выражение для проверки ввода. Другой способ - добавить новый валидатор, например, «не совпадать». Я пытался использовать существующий валидатор регулярных выражений для реализации этого. – prakash

+1

@prakash Если вам нужно будет работать с введенными пользователем данными, вам нужно будет рассмотреть, как избежать любых специальных символов регулярного выражения в согласованной строке. Например, что, если они хотят соответствовать «не' $ 0.00 »? Я бы подумал, что было бы намного быстрее и надежнее реализовать не-равные, которые не будут использовать регулярное выражение. – PMV