angularjs 正则表达式,用于在JavaScript中查找字符串中每次重复出现的字符

1wnzp6jl  于 2022-11-21  发布在  Angular
关注(0)|答案(2)|浏览(184)

正则表达式,用于查找字符串中每次重复出现的字符
示例:

YYMMDD-YYYY-DD true
YYMDD false

Y、M、D区分大小写Y、M、D可以在字符串中多个位置成对出现多次,但每对必须是偶数。
我已经应用了上面的even check使用for loop,但必须用regex替换for loop,我也用下面的regex尝试过,但它没有工作

if (result.match(/M{2,}/) || result.match(/D{2,}/) || result.match(/Y{2,}/)) {}

solution using for loop which i have implemented

ve7v8dk2

ve7v8dk21#

re = /^(?:([A-Z])\1|[^A-Z])+$/

console.log(re.test('YYMMDD-YYYY-DD'))
console.log(re.test('YY'))
console.log(re.test('YYY'))
console.log(re.test('YYYY'))

/^(?:([A-Z])\1|[^A-Z])+$/ =((字母+同一字母再次)OR非字母)重复一次或多次

os8fio9y

os8fio9y2#

[ 'YYMMDD-YYYY-DD', 'YYMMDD', 'YYMDD', 'Y', 'YY', 'YYY', 'YYYY' ].forEach(str => {
  let ok = /^(?:([a-zA-Z])\1-?)+$/.test(str);
  console.log(str + ' => ' + ok);
});

输出量:

YYMMDD-YYYY-DD => true
YYMMDD => true
YYMDD => false
Y => false
YY => true
YYY => false
YYYY => true

正则表达式说明:

  • ^-字符串起点处的锚
  • (?:-非捕获组开始
  • ([a-zA-Z])-捕获组1:单字母字符
  • \1-重复捕获组1
  • -?-可选-(如果需要,更改为字符类以允许使用其他字符)
  • )+--非捕获组结束,重复1+次
  • $--终点锚

相关问题