Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于Safari的Regex Lookback备选方案_Javascript_Regex_Safari - Fatal编程技术网

Javascript 用于Safari的Regex Lookback备选方案

Javascript 用于Safari的Regex Lookback备选方案,javascript,regex,safari,Javascript,Regex,Safari,我已经实现了这个正则表达式,用于匹配字符串以进行验证: ^(?[a-zA-Z0-9]{0,3})(?:(?[a-zA-Z]{1,2})(?(?我怀疑是否有一种方法可以使用单个正则表达式,而不需要任何后置或条件支持,因此我建议将正则表达式与其他编程逻辑结合起来: var text=['abcfobar','abc33bar']; var regex=/^([a-zA-Z0-9]{0,3})(?:([a-zA-Z]{1,2})([a-zA-Z0-9]+)?/; 对于(var i=0;i,您可以使用

我已经实现了这个正则表达式,用于匹配字符串以进行验证:
^(?[a-zA-Z0-9]{0,3})(?:(?[a-zA-Z]{1,2})(?(?我怀疑是否有一种方法可以使用单个正则表达式,而不需要任何后置或条件支持,因此我建议将正则表达式与其他编程逻辑结合起来:

var text=['abcfobar','abc33bar'];
var regex=/^([a-zA-Z0-9]{0,3})(?:([a-zA-Z]{1,2})([a-zA-Z0-9]+)?/;

对于(var i=0;i,您可以使用一个条件从限制性最强的模式开始,然后反向到限制性最小的模式:

^(?:[a-zA-Z0-9]{3}[a-zA-Z]{2}[a-zA-Z0-9]*|[a-zA-Z0-9]{3}[a-zA-Z]{1,2}|[a-zA-Z0-9]{0,3})
我不知道命名的捕获组对您的JS代码逻辑是否有任何意义,但不幸的是,您不能声明相同的捕获组名称


So
serialMarket
不是必需的?并且只有当
serialCode
serialMarket
都存在时,
serialSuffix
才能存在?如果至少有一个字符按顺序匹配,则应创建每个组。如果根本没有匹配,则不应为该特定匹配创建组。因此,应退出该组t仅当组的开头至少有一个匹配项时,逐字符验证。您可以在此处的链接中进行检查这是一个工作示例,问题是这是使用
lookback实现的,这在Safari中给出了一个错误。我明白了。我必须在会议后进行更多检查。这似乎符合我的目的。非常感谢!太糟糕了,
lookbehind
在所有浏览器中都不受支持。