我有一根看起来像这样的绳子
#123##1234###2356####69它以#开头,后面跟着任何数字,每次#出现时,#的数量都会增加,第一次1次,第二次2次,等等。
它类似于这个正则表达式,但是由于我不知道这个模式会持续多久,所以它不是很有用。
^#\d+##\d+###\d+$我使用PCRE引擎,它允许递归(?R)和条件(?(1)...)等。
是否存在验证此模式的正则表达式?
有效
#123#12##235#1234##12###368#1234##12###368####22235#####723356无效
##123#123###456#123##456##789我试过^(?(1)(?|(#\1)|(#))\d+)+$,但它似乎根本不起作用
发布于 2021-03-12 11:20:27
发布于 2021-03-12 11:20:35
发布于 2021-03-12 11:40:47
我想你可以在这里使用前向引用:
^(?:((?:\1(?!^)|^)#)\d+)+$见regex演示。
详细信息
^ -字符串的开始(?:((?:\1(?!^)|^)#)\d+)+ -发生一个或多个事件((?:\1(?!^)|^)#) -组1( \1值):字符串的开始或组1值的出现(如果它不在字符串起始位置)\d+ -一个或多个数字$ -字符串的末端。注意事项:这种技术不适用于不支持前向引用的regex口味,比如基于ECMAScript的口味(例如JavaScript、VBA、C++ std::regex)。
https://stackoverflow.com/questions/66596578
复制相似问题