Неправильный возврат при проверке регулярного выражения с JavaScript - PullRequest
1 голос
/ 15 марта 2019

Кто-нибудь взглянет на мое регулярное выражение, пожалуйста?Я пытаюсь проверить группу regex, но она слишком жадно совпадает.

/*Should match only 16 characters in total & must begin with BE and follow by 14 digits */ 
 
var re = /(?<iban>[/BE\B/(?={0-9})])/gm
     
let correctIban  = 'BE71096123456769'              // => should match
let badIbanOne   = 'BE13466123456767590kd'         // => should NOT match
let badIbanTwo   = 'BE13466123456767590679080176'  // => should NOT match
let badIbanThree = 'AZ71096123456769'              // => should NOT match

console.log(re.test(correctIban));   // => true
console.log(re.test(badIbanOne));    // => false
console.log(re.test(badIbanTwo));    // => false
console.log(re.test(badIbanThree));  // => false

Редактировать

Спасибо за помощь людям.Вот код с синтаксисом захвата группы в ES2018 для тех, кто хочет знать: (?<iban>^BE\d{14}$)

1 Ответ

1 голос
/ 15 марта 2019
var re = /^BE\d{14}$/; 

Объяснение:

  • ^ - отмечает начало выражения
  • BE - буквенные символы 'BE'
  • \d -любая цифра (аналогично [0-9])
  • {14} - квантификатор - точный 14
  • $ - отмечает конец выражения

Все дополнительныевещи не были нужны.

Вы можете попробовать это здесь: https://regex101.com/r/4wF3NG/1

...