Javascript 输入元素如何检查字符串是否与模式属性中指定的正则表达式匹配?

Javascript 输入元素如何检查字符串是否与模式属性中指定的正则表达式匹配?,javascript,regex,html,validation,input,Javascript,Regex,Html,Validation,Input,我正在创建一个npm模块,它将是来自和其他来源的正则表达式验证模式的集合 当我试着测试一些表达式时,我的问题出现了。我习惯于做简单的断言 在内部,当测试正则表达式时,Ava使用RegExtest()方法。因此,例如,/[a-zA-Z0-9]+/.test(“Us3rN@m3“”将返回true 但是,当您实际使用/[a-zA-Z0-9]+/作为输入元素的模式属性的正则表达式时,”Us3rN@m3“返回false 所以我猜测,在内部,输入元素正在做一个不同的测试 HTML声明给定的正则表达式被编译为

我正在创建一个npm模块,它将是来自和其他来源的正则表达式验证模式的集合

当我试着测试一些表达式时,我的问题出现了。我习惯于做简单的断言

在内部,当测试正则表达式时,Ava使用RegEx
test()
方法。因此,例如,
/[a-zA-Z0-9]+/.test(“Us3rN@m3“”
将返回
true

但是,当您实际使用
/[a-zA-Z0-9]+/
作为输入元素的模式属性的正则表达式时,
”Us3rN@m3“
返回
false

所以我猜测,在内部,输入元素正在做一个不同的测试

HTML声明给定的正则表达式被编译为JavaScript正则表达式,只指定了“u”标志,这并没有告诉我多少


如果我像这样编写正则表达式
/^[a-zA-Z0-9]+$/.test(“Us3rNm3”)
,它会像输入元素一样返回
true
,但我不确定它内部是否是这样工作的

要正确测试HTML5模式,请确保使用
^(?:
)$
包装整个字符串模式,以确保整个字符串匹配

根据:

用于此属性的正则表达式语言与JavaScript中使用的正则表达式语言相同,不同之处在于模式属性与整个值匹配,而不仅仅是与任何子集匹配(有点像它在模式的开头暗示了一个
^(?:
),在结尾暗示了一个
)$


/[a-zA-Z0-9]+/.试验(“Us3rN@m3“”
在任何典型的编程语言AFAIK中都不应返回true。您确定向我们显示了正确的代码吗?根据:此属性使用的正则表达式语言与JavaScript中使用的相同,只是模式属性与整个值相匹配,而不仅仅是与任何子集相匹配(有点像它在模式的开头暗示了一个
^(?:
和一个
)$
结尾)。@TimBiegeleisen-它是用JavaScript编写的。“Us3rN”是它返回真值的原因。请阅读上面Wiktor的评论,它似乎解释了这里发生的事情。@WiktorStribiżew-Ah!那一页我读了很多遍,我一定是掩饰了一下。有道理。谢谢