重用JS正则表达式中的捕获组模式 [英] Reuse capturing group pattern in JS regex

查看:60
本文介绍了重用JS正则表达式中的捕获组模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想测试一个字符串是8位数字还是相同数字可以分为4个部分,每个部分用-分隔.

I want to test whether a string is 8 digits or the same number can be divided into 4 parts separated by a -.

我有一个能正常工作的正则表达式:

I have a regex that does work:

/^\d{2}([-]?)(\d{2})\1\d{2}\1\d{2}$/

我可以证明:

/^\d{2}([-]?)(\d{2})\1\d{2}\1\d{2}$/.test('12345678'); // true
/^\d{2}([-]?)(\d{2})\1\d{2}\1\d{2}$/.test('12-34-56-78');  // true
/^\d{2}([-]?)(\d{2})\1\d{2}\1\d{2}$/.test('12-45-7810'); // false
/^\d{2}([-]?)(\d{2})\1\d{2}\1\d{2}$/.text('-12-45-78-10'); //false

我本来想从 \ d {2} 创建一个组,但是我尝试了以下操作:

I would have liked to have created a group from \d{2} but I tried this:

/^(\ d {2})([-]?)\ 1 \ 2 \ 1 \ 2 \ 1 $/

但是它什么都不匹配.

推荐答案

您甚至可以写得更短: ^ \ d \ d(-\ d \ d){3} $ | ^ \ d {8} $

You can write even shorter: ^\d\d(-\d\d){3}$|^\d{8}$

这篇关于重用JS正则表达式中的捕获组模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆