Javascript正则表达式-匹配比表达式短的字符串? 让productIdPattern=/[0-9]{3}[A-Z]{3}[0-9]{3}/ 让userInput='123A' if(userInput.match(productIdPattern)){ 警报(“'123A'正常,继续键入!”) }

Javascript正则表达式-匹配比表达式短的字符串? 让productIdPattern=/[0-9]{3}[A-Z]{3}[0-9]{3}/ 让userInput='123A' if(userInput.match(productIdPattern)){ 警报(“'123A'正常,继续键入!”) },javascript,regex,Javascript,Regex,给出了上面的JavaScript伪代码 用户正在键入产品ID。对于每次击键,我都要检查输入是否与产品ID模式匹配。否则,按键将被忽略。因此,输入必须遵循该模式 例如: 当前输入为“123”,用户按“4”无效,将被忽略 当前输入为“123”,用户按下有效的“X”键,该键将被追加到输入中 有没有一种方法可以在不为每个输入长度生成许多不同或复杂模式的情况下实现这一点?如果字符串比模式短,我需要一种方法告诉“String.match()”函数忽略模式的其余部分。请尝试以下模式: /^(?:\d{1,

给出了上面的JavaScript伪代码

用户正在键入产品ID。对于每次击键,我都要检查输入是否与产品ID模式匹配。否则,按键将被忽略。因此,输入必须遵循该模式

例如:

  • 当前输入为“123”,用户按“4”无效,将被忽略
  • 当前输入为“123”,用户按下有效的“X”键,该键将被追加到输入中

有没有一种方法可以在不为每个输入长度生成许多不同或复杂模式的情况下实现这一点?如果字符串比模式短,我需要一种方法告诉“String.match()”函数忽略模式的其余部分。

请尝试以下模式:

/^(?:\d{1,3}|\d{3}[A-Z]{1,3}|\d{3}[A-Z]{3}\d{1,3})$/

您可以看到这是如何工作的可视化视图。

我们可以创建一个只允许输入所需模式的输入过滤器;其他一切都会立即被删除。这是通过使用就地更换模式实现的:


[代码><代码><代码><代码><<代码><<代码><代码><<代码><代码><代码><代码><代码><代码><代码><代码><代码><代码><代码><代码<0-9[1,3}{1,3{0-9{0-9{0-9{0,3}{0,3}}<代码><<代码><代码><代码><代码><代码><代码>/代码>/维克托托托尔斯斯斯比不会认为那那场比赛会不会匹配<<代码>的那个那个匹配<代码>的那个么么么么么么么,123X4<代码>123x44<代码><代码>123x44<<代码><代码><代码><代码>1234<代码><代码>123x44<。