простое регулярное выражение в javascript, возвращающее true, когда оно не должно быть [duplicate]

Для меня тоже он работал со следующими аннотациями:

@Modifying
@Query("update User u set u.active=1 where a.id=?1")
@Transactional
void  activeUser(Long id);
106
задан Flimzy 10 July 2018 в 17:37
поделиться

3 ответа

Используйте разделители начала и конца: ^abc$

193
ответ дан Howard 16 August 2018 в 01:32
поделиться
  • 1
    @ Jake, я рад, что ответ ответил, но я думаю, вы должны заметить, что он будет работать только тогда, когда только abc является единственным элементом в строке. Например, он не будет соответствовать «первые три буквы в алфавите: abc», – matchew 9 June 2011 в 21:27
  • 2
    Это сработало для меня, может быть, мой пример должен был быть «abc def ghi». как цель сопоставления. – Jake Pearson 9 June 2011 в 21:34
  • 3
    @Jake, если ваша строка была «abc def ghi»; то / ^ abc $ / не будет работать. ex: jsfiddle.net/XUyAc – matchew 9 June 2011 в 21:41
  • 4
    Я получаю это, если я хочу совместить & quot; abc def ghi & quot; мое регулярное выражение будет ^abc def ghi$ – Jake Pearson 9 June 2011 в 21:45
  • 5
    да, это было бы правильно. – matchew 9 June 2011 в 21:50

"^" Для начала строки "$" для конца. Eg.:

var re = /^abc$/;

Соответствует «abc», но не «1abc» или «abc1». Вы можете узнать больше на странице https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

11
ответ дан Prusse 16 August 2018 в 01:32
поделиться

Это зависит. Вы могли бы

string.match(/^abc$/)

Но это не соответствовало бы следующей строке: «первые 3 буквы алфавита - abc. а не abc123 '

Я думаю, вы хотите использовать \ b (границы слов)

var str = 'the first 3 letters of the alphabet are abc. not abc123';
var pat = /\b(abc)\b/g;
console.log(str.match(pat));

Пример в реальном времени: http://jsfiddle.net/uu5VJ/

Если первое решение работает для вас, я бы посоветовал не использовать его.

Это означает, что у вас может быть что-то вроде следующего:

var strs = ['abc', 'abc1', 'abc2']
for (var i = 0; i < strs.length; i++) {
    if (strs[i] == 'abc') {
        //do something 
    }
    else {
        //do something else
    }
}

Пока вы можете использовать

if (str[i].match(/^abc$/g)) {
    //do something 
}

Это было бы значительно более ресурсоемким. Для меня общее правило состоит в том, что для простого сравнения строк используется условное выражение, поскольку более динамический шаблон использует регулярное выражение.

больше для JavaScript regex's: https: // developer. mozilla.org/en/JavaScript/Guide/Regular_Expressions

31
ответ дан Raghav Dinesh 16 August 2018 в 01:32
поделиться
  • 1
    Как жалко, что этот ответ не принят как правильный ответ автору. – Nihar Sawant 6 September 2012 в 13:29
  • 2
    @NiharSawant Это потому, что это не ответ на вопрос, который задал ОП. Очевидно, что OP не соответствует , и первые три буквы алфавита являются abc ", а второе решение здесь не подходит для соответствия общим регулярным выражениям, например. / ^ [А] + $ / – DJClayworth 8 August 2014 в 16:30
Другие вопросы по тегам:

Похожие вопросы: