Javascript 如何验证输入长度,但忽略字母?

Javascript 如何验证输入长度,但忽略字母?,javascript,regex,Javascript,Regex,我有一个输入,将有3-5个字母数字字符之间的输入 我想验证用户输入是否在3-5个字符之间: /^[A-Za-z0-9]{3,5}$/ 但是,我想忽略表单提交中的任何字母字符,而不是去除它们 因此RS032的输入值在表单提交时的输入中保持不变,但是表单实际上只返回032。这个问题有点回避细节,但我猜您希望验证字段中除字母以外的所有内容。因此,如果输入是abc1d2e3fgh,并且您的需求是3位数字,那么您希望它通过 对于这样一个非常基本的需求,您可以穿插可选的[a-Za-z]*?在其他必需字符之

我有一个输入,将有3-5个字母数字字符之间的输入

我想验证用户输入是否在3-5个字符之间:

/^[A-Za-z0-9]{3,5}$/
但是,我想忽略表单提交中的任何字母字符,而不是去除它们


因此RS032的输入值在表单提交时的输入中保持不变,但是表单实际上只返回032。这个问题有点回避细节,但我猜您希望验证字段中除字母以外的所有内容。因此,如果输入是abc1d2e3fgh,并且您的需求是3位数字,那么您希望它通过

对于这样一个非常基本的需求,您可以穿插可选的[a-Za-z]*?在其他必需字符之间设置。因此,对于3个数字的要求,您可以使用

[A-Za-z]*?\d[A-Za-z]*?\d[A-Za-z]*?\d[A-Za-z]*

这需要3位数字\d,并且允许在这些数字之前、之间或之后有任意数量的字母

如果您需要使用匹配/捕获组,而不仅仅是验证匹配/不匹配,这将不起作用

除非你有一个非常基本的要求,否则我知道用一个正则表达式是无法实现这一点的。您可能需要将字符串分配给另一个变量,去掉字母,然后进行验证。通过分配给另一个变量,可以保留输入

更新以回应问题编辑: 听起来你确实想把这些字母去掉,但你只想在后端这样做。我认为这正是你应该做的,而不是将其与验证混为一谈


如果您真的想在客户端完成这项工作,那么可以使用一个额外的隐藏字段,当源文本发生变化时,您可以通过Javascript更新该字段。在服务器上,您可以忽略源字段,而使用剥离字段。

忽略字母-这里忽略的确切含义是什么?请给出您所需输入/输出的示例。我相信您的问题是,如何使提交的表单值等于032,但在技术上提交表单后,该值保持不变。如果是这种情况,我相信您有一个误解-提交后字段中出现的内容通常取决于服务器,在这种情况下,我们需要知道您的服务器端语言是什么,除非您使用的是AJAX提交???该模式可以缩短为:[A-Za-z]*?\d{3,},这将使解释和解决方案更易于维护。+1,但您应该在两端锚定它,并且不需要使量词不贪婪@马库斯,你的正则表达式也是一样,你忘了解释最后一个数字后面的字母。编辑:……或者您是否将假设数字更改为三位数或更多?@Alanmore它将匹配三位数或更多。因为它不使用任何锚,所以后面的可选字母可以跳过:@Marcus和Alan,你们当然是对的。假设可以更有力地证明,这可能很快变得相当繁重。+1此编辑更新的响应。。。似乎更好地回答了问题的意图,基本上是我会提供的解决方案。