我尝试根据以下三个条件验证字符串
1.它必须包含字符串
1.除了.
和-
之外,不应包含任何特殊字符。
1.数字是允许的,但不是必需的
我在hit和trial的帮助下形成了这个正则表达式^(?=.*[a-zA-Z])[a-zA-Z0-9\.\- ]*$
。它可以在所有可用于测试的在线工具中工作。但是我不能在代码中使用它
package main
import (
"fmt"
"regexp"
)
func main() {
rule := regexp.MustCompile(`^(?=.*[a-zA-Z])[a-zA-Z0-9\.\- ]*$`).MatchString
fmt.Println(rule("test_string"))
}
字符串
错误说
panic: regexp: Compile(`^(?=.*[a-zA-Z])[a-zA-Z0-9\.\- ]*$`): error parsing regexp: invalid or unsupported Perl syntax: `(?=`
型
即使它在其他在线工具中也有效。我该怎么解决这个问题?
1条答案
按热度按时间6yjfywim1#
go不支持lookaroundAssert,但是你可以通过匹配允许的字符来省略lookaround。
您可以在可选匹配任何允许的字符之间匹配单个字符A-Za-z。
字符串
说明
^
字符串开头[0-9. -]*
可选匹配任何允许的字符,不带a-zA-Z[a-zA-Z]
匹配单个字符a-zA-Z[a-zA-Z0-9. -]*
可选匹配所有允许的字符$
字符串结束Regex demo
型
输出量
型