用于HTML5输入验证的Javascript正则表达式语法

用于HTML5输入验证的Javascript正则表达式语法,javascript,regex,html,Javascript,Regex,Html,所以有很多问题,通过一些过滤,我仍然不知道该怎么做 模式为: 仅字母表,不区分大小写,不限制字符数或单词数,至少3个字符 我有 pattern="[A-z]{3,}" 这给了我一切,除了我只能说一个字-( 编辑:让我更清楚一点,我希望验证能为我实现什么 我用它来捕捉一个人的名字,但我不想涉及任何特殊的字符或数字,所以没有“小约翰·多伊”,因为“.”将被拒绝,但我希望能够捕获双字符甚至单字符部分,同时保持“全局”3个字符的最小限制…要允许空格,您所要做的就是在字符模式中添加一个空格,其中包含

所以有很多问题,通过一些过滤,我仍然不知道该怎么做

模式为:

  • 仅字母表,不区分大小写,不限制字符数或单词数,至少3个字符
我有

pattern="[A-z]{3,}"
这给了我一切,除了我只能说一个字-(

编辑:让我更清楚一点,我希望验证能为我实现什么


我用它来捕捉一个人的名字,但我不想涉及任何特殊的字符或数字,所以没有“小约翰·多伊”,因为“.”将被拒绝,但我希望能够捕获双字符甚至单字符部分,同时保持“全局”3个字符的最小限制…

要允许空格,您所要做的就是在字符模式中添加一个空格,其中包含
[a-z]

因此,它变成:

pattern="[A-z ]{3,}"
希望有帮助

但是,请注意,这将阻止其他类型的空白字符。我假设这是您想要的,因为您对字符集的其余部分有很大的限制,但值得指出的是,在上述情况下,非中断空格、回车符和其他空白字符将被阻止。如果您想允许,请使用
\s而不仅仅是空格:这将匹配任何空白字符


最后,值得指出的是,即使对于纯英语文本,标准字母表也往往不够。有带重音的有效英语单词,还有撇号和其他标点符号。您尚未指定字段的用途,因此我认为这不是问题,但我觉得值得指出

要允许使用空格,您所要做的就是在字符模式中添加一个空格,其中包含
[a-z]

因此,它变成:

pattern="[A-z ]{3,}"
希望有帮助

但是,请注意,这将阻止其他类型的空白字符。我假设这是您想要的,因为您对字符集的其余部分有很大的限制,但值得指出的是,在上述情况下,非中断空格、回车符和其他空白字符将被阻止。如果您想允许,请使用
\s而不仅仅是空格:这将匹配任何空白字符


最后,值得指出的是,即使对于纯英语文本,标准字母表也往往不够。有带重音的有效英语单词,还有撇号和其他标点符号。您尚未指定字段的用途,因此我认为这不是问题,但我觉得值得指出

如何
pattern=“[A-z\s]{3,}”

如何
pattern=“[A-z\s]{3,}”

很难看出问题所在。您是在匹配字符串,而不是一组单词。 如果您的模式是“一个单词列表,每个单词只按字母顺序排列并用空格分隔”,那么正则表达式将是

([A-Za-z]{3,}\\s*)+

编辑以回答更新的问题

[A-Za-z\\s]*([A-Za-z]{3,})+[A-Za-z\\s]* (works in Java)

很难看出问题是什么。您匹配的是一个字符串,而不是一组单词。 如果您的模式是“一个单词列表,每个单词只按字母顺序排列并用空格分隔”,那么正则表达式将是

([A-Za-z]{3,}\\s*)+

编辑以回答更新的问题

[A-Za-z\\s]*([A-Za-z]{3,})+[A-Za-z\\s]* (works in Java)

这将允许短于3个字符的单词;v.g.“a b”将匹配。@SJuan76-如果您这样说,但它仍然会强制执行最小3个字符的限制吗?或者您是说上述语法将允许字段本身接受单个字符?换句话说,上述语法能否处理=“John a”,但拒绝=“a”?是的。顺便说一句,您应该在模式测试之前修剪输入字符串中的空格,否则它可能匹配一行中的五个空格。这将允许单词短于3个字符;v.g.“a b”将匹配。@SJuan76-如果您这样说,但它仍然会强制执行最小3个字符的限制吗?或者您是说上述语法将允许字段本身接受单个字符吗?换句话说,上述语法能否处理=“John a”,但拒绝=“a”?是的。顺便说一句,你应该在模式测试之前修剪输入字符串中的空格,否则它可能会匹配一行中的五个空格。+1,因为它是其他解决方案的不同解决方案。这个解决方案会给出任意数量的字,每个字必须是三个字符或更多。虽然我认为其他解决方案是正确的,但是问题也可以这样解释,因此我给这个答案加1。公平地说,你几乎已经回答了我的问题,但有一个问题,我希望总字符数超过3个字符,但这并不意味着每个单词至少应该是3个字符……当有人输入字符串“John Jr”时会发生什么?验证将拒绝它,因为“Jr”违反了最小3个字符的规则…哦,很抱歉问题有点模糊…无论如何,我可以改进它吗?+1,因为它是其他解决方案的不同解决方案。此解决方案将给出任意数量的单词,每个单词必须是3个字符或更多。而我认为其他解决方案是相同的正确,这个问题也可以这样解释,因此我给这个答案加1。公平地说,你几乎已经回答了我的问题,但有一个问题,我希望总字符数超过3个字符,但这并不意味着每个单词至少应该有3个字符……当有人输入字符串时会发生什么“小约翰"?验证将拒绝它,因为“Jr”违反了最小3个字符的规则…哦,很抱歉,问题有点模糊…无论如何,我可以改进它?谢谢你指出它,伙计,我意识到这个问题有点太笼统了,并且已经做了相应的修改…如果它仍然不够清楚,请让我来知道我该怎么解决吗…@Abhishek-如果是为了验证名字,那么我强烈建议重新考虑限制