我是靠谱客的博主 岁月静好,最近开发中收集的这篇文章主要介绍golang 正则表达式解析错误:invalid or unsupported Perl syntax: `(?!`,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

当我在golang中尝试这个正则表达式时

我得到了正则表达式解析错误:

error parsing regexp: invalid or unsupported Perl syntax: `(?!`

错误解析正则表达式:无效或不支持的Perl语法:(?!

Go正则表达式不支持lookaround。


方案一:

  regexp.MustCompile(^ On \\s(。+?)写道:$)

  regexp.MustCompile(^ On。* On\ \s。+?写:)

并检查第一个匹配字符串和第二个不会。



您还可以添加一个可选的捕获组(。* On)?

   On  true 。如果是,返回,否则。


方案二:

go get github.com/dlclark/regexp2

代码如下(示例):

func matchStr(str string) string {
	expr := `^(?![0-9a-zA-Z]+$)(?![a-zA-Z!@#$%^&*]+$)(?![0-9!@#$%^&*]+$)[0-9A-Za-z!@#$%^&*]{8,16}$`
	reg, _ := regexp2.Compile(expr, 0)
	m, _ := reg.FindStringMatch(str)
	if m != nil {
		res:= m.String()
		return res	}
	return "密码包含至少一位数字,字母和特殊字符,且长度8-16"}

“^(?![0-9a-zA-Z]+$)(?![a-zA-Z!@#$%^&*]+$)(?![0-9!@#$%^&*]+$)[0-9A-Za-z!@#$%^&*]{8,16}$”中:

(?![0-9a-zA-Z]+$) 表示匹配后面非数字,非字母的字符

(?![a-zA-Z!@#$%^&*]+$) 表示匹配后面非字母,非特殊字符的字符

(?![0-9!@#$%^&*]+$) 表示匹配后面非数字,非特殊字符的字符

[0-9A-Za-z!@#$%^&*]{8,16} 表示长度8-16,可以是任意的数字,字母和其中包含的特殊字符


最后

以上就是岁月静好为你收集整理的golang 正则表达式解析错误:invalid or unsupported Perl syntax: `(?!`的全部内容,希望文章能够帮你解决golang 正则表达式解析错误:invalid or unsupported Perl syntax: `(?!`所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(1409)

评论列表共有 0 条评论

立即
投稿
返回
顶部