Javascript 正则表达式|模式属性值不是有效的正则表达式:未捕获的语法错误:无效的正则表达式
我通过javascript将一些正则表达式字符串注入到输入元素的模式属性中(取决于上下文之外的一些形式更改),它可以按预期工作,但问题是,当我第一次关注输入时,它会将错误记录到控制台 正如您在下面看到的,我试图转义正则表达式,但是HTML输入无法根据之前使用的模式验证相应的值 必需的正则表达式代码Javascript 正则表达式|模式属性值不是有效的正则表达式:未捕获的语法错误:无效的正则表达式,javascript,html,regex,validation,input,Javascript,Html,Regex,Validation,Input,我通过javascript将一些正则表达式字符串注入到输入元素的模式属性中(取决于上下文之外的一些形式更改),它可以按预期工作,但问题是,当我第一次关注输入时,它会将错误记录到控制台 正如您在下面看到的,我试图转义正则表达式,但是HTML输入无法根据之前使用的模式验证相应的值 必需的正则表达式代码 (\(?([\d\)\–+\/\(]+){6,}\)([.\-–\/]?)([\d]+) 这就是我通过JS定义和注入它的方式 /([\d\-\)–+\/\(]+){6,}\)([.\-–\/]?)([
(\(?([\d\)\–+\/\(]+){6,}\)([.\-–\/]?)([\d]+)
这就是我通过JS定义和注入它的方式
/([\d\-\)–+\/\(]+){6,}\)([.\-–\/]?)([\d]+)/g
下面是我在试图为HTML模式属性转义它时尝试和失败的内容
([\d\)–+/(]+){6,}\)([.-–/])([\d]+)
我真的在寻找一种方法来实现所有这些,而不出现任何错误:
- 正则表达式将在JS中用于
与输入值匹配,并且仅在有效时才继续将
- 它还将在HTML中用作模式属性,以向用户提供有关输入验证的反馈,希望不会出现类似这样的错误<代码>模式属性值/(\(?([\d\-)\–+/\(]+){6,}\)([.\-–\/])([\d]+)/g不是有效的正则表达式:未捕获的语法错误:无效的正则表达式:/(?([\d\-)\–+/\(]+){6,}\([.-–+/])([\d]+)/g/:无效的转义
var rx=/^\(?[\d+\/()–-]{6,}\)?[.\/-]?\d+$/;
//试验
控制台日志(接收测试(“02162-54914479”)代码>在任何转义之前,您的([\d\-\)\-\+\/\(]+){6,}
没有任何意义。在char类中匹配一个或多个char 6次或多次。模式应该匹配什么?要验证字符串,您需要使用^your_pattern$
,添加锚。响应@WiktorStribiż的Thnx新模式应该与regex完全匹配(它地址类似于这些德国电话号码)。我对regex很满意,但我的输入模式属性不是:syyou need/^(?[\d+\/()–]{6,})在String#match
和pattern=“\(?[\d+\/()–]{6,}\)?[.\/-]?\d+$/
中,
为什么?它解决了我的需要。我很想听听你的建议,这将与模式属性很好地工作。谢谢你的时间。我会接受你的回答,但我真的想知道我的表单有什么问题,因为我在控制台模式属性值(?[d+/()–]{6,})?[./-]?d+不是有效的正则表达式:未捕获的语法错误:无效的正则表达式:/(?[d+/()–]{6,})?[./-]?d++:无效组
对应html和JS代码在这里:在那里,您需要pattern=“\s*[A-Za-z]+(?:(?:[,]?|[-'])[A-Za-z]+\。?\s*”
用于名称
。phonePattern=newregexp(/^\(?[\d+\/()–-]{6,}\)?[.\/–-]?\d+$/)代码>必须声明为const phonePattern=/^\(?[\d+\/()–-]{6,}\)?[.\/–-]?\d+$/代码>。和let resolution=inputValue&&!!inputValue.match(this.phonePattern)
必须是let resolution=inputValue&&this.phonePattern.test(inputValue)代码>,但主要的问题是inputEl.setAttribute('pattern',
(?[\d+\/()–-]{6,})?[.\/-]?\d+)
,它必须是inputEl.setAttribute('pattern',“\\(?[\\d+/()–-]{6,}\\)?[./-]?\\d+”代码>。再见,谢谢!这种模式现在很有魅力。既然你对正则表达式有很好的了解,我可以问你为什么我们要改变模式的正则表达式字符串吗?背后的动机是什么,欢迎任何链接文章。再次,非常感谢Wiktor!一个接一个地问我一个问题,可能是在聊天时。这里的东西太多了。事实上,我不明白你所说的为什么我们必须更改模式的正则表达式字符串。我改为^\(?[\d+\/()–-]{6,}\)?[.\/–-]?\d+$
,因为字符类末尾的连字符不必转义,(a+{6,}
没有意义,必须使用锚点才能将正则表达式应用于整个字符串。