Javascript 将Golang正则表达式转换为JS正则表达式
我有一个来自Golang的正则表达式(nameComponentRegexp)。如何将其转换为JavaScript样式的正则表达式 对我来说,主要的阻塞问题是:Javascript 将Golang正则表达式转换为JS正则表达式,javascript,regex,go,Javascript,Regex,Go,我有一个来自Golang的正则表达式(nameComponentRegexp)。如何将其转换为JavaScript样式的正则表达式 对我来说,主要的阻塞问题是: 如何在JavaScript中正确执行可选和重复 我尝试了从匹配(`(?:[.\u124; | | |[-]*)`)复制,但它无法匹配单句点或单下划线。我在在线正则表达式测试仪上试过了 来自Golang的描述: nameComponentRegexp限制注册表路径组件名称启动 至少有一个字母或数字,以下部分可以 由一个句点、一个或两个下划
可选
和重复
匹配(`(?:[.\u124; | | |[-]*)`)
复制,但它无法匹配单句点或单下划线。我在在线正则表达式测试仪上试过了- a、 a
- a_a
- a_uu_uA
- a-a
- a--a
- a--a
名称组件regexp
:从字母数字regexp
开始,然后匹配1个或多个分隔符regexp
+字母数字regexp
序列的1个或0个匹配项
是否有下列情况:
//可选将表达式包装在非捕获组中,并使
//生产可选。func optional(res ...*regexp.Regexp) *regexp.Regexp { return match(group(expression(res...)).String() + `?`) } 因此,你需要的是
/^[a-z0-9]+(?:(?:[._]|__|-*)[a-z0-9]+)*$/
见
详细信息:
-字符串的开头^
-1个或多个字母数字符号[a-z0-9]+
-零个或多个以下序列:(?:(?:[.|]| |-*)[a-z0-9]+)*
-a(?:[.|]| |-*)
、
、或0+连字符
-1个或多个字母数字符号[a-z0-9]+
aaaa
这样的字符串,则需要将模式中的所有*
替换为+
()
JS演示:
var ss=['a.a','a_a','a_a','a-a','a--a','a--a'];
变量rx=/^[a-z0-9]+(?:(?:[.|]| | |-*)[a-z0-9]+)*$/;
用于(ss的var s){
控制台日志,“=>”,接收测试);
}
展示您的最佳尝试。重复和/或可选组或字符是regex 101的标准功能。因此,可能类似于/^[a-z\d]+((?:[.|]| |[-]*)[a-z\d]+)*$/
的东西,我想repeated()
意味着“所有”,所以在其他语言中通常作为g
标志实现。optional()
做什么?它是否返回选项monad?@slebetman
func repeated(res ...*regexp.Regexp) *regexp.Regexp {
return match(group(expression(res...)).String() + `+`)
}
/^[a-z0-9]+(?:(?:[._]|__|-*)[a-z0-9]+)*$/