正在使用正则表达式来更好地学习它,想知道我们是否可以编写正则表达式来匹配下面的用例
字符串:1_234_3456_345
预期结果:我想使用正则表达式仅匹配该字符串的前 4 个数字。意思就是 1234,忽略中间的下划线。
另一个示例字符串:123_7689_54A
预期结果:1237(仅应匹配字符串中的前 4 个数字,忽略它们之间的字符)
我尝试过这样的事情:
/\d.?\d.?\d.*?\d/
但是在上面的例子中:(第一个)和第二个
123_7
我希望它省略之间的_
。我该怎么办?首先这可能吗?
试试这个:
(?:\d|_(?=\d)){4}
简短说明:
数字或下划线+数字四次。
解释长:
(?: ... )
是非捕获群。
\d
匹配任何数字。
|
是交替运算符,意思是“或”。
_(?=\d)
仅当下划线后跟数字时才匹配下划线(使用正向先行断言)。
{4}
量词指定前面的组应该精确匹配四次。