Javascript Regex - 匹配比表达式短的字符串?

标签 javascript regex

let productIdPattern = /[0-9]{3}[A-Z]{3}[0-9]{3}/ 
let userInput = '123A'
if (userInput.match(productIdPattern)) {
    alert("'123A' is ok, go ahead typing!")
}

给出的是上面的 JavaScript 伪代码。

用户正在输入产品 ID。对于每次击键,我都想检查输入是否与 Product-ID 模式匹配。如果不是,击键将被忽略。所以输入必须遵循模式。

例如:

  • 当前输入“123”,用户按“4”,这是无效,将被忽略。
  • 当前输入为“123”,用户按有效的“X”并将附加到输入中。

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

最佳答案

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

<input type="text" formControlName="productIdInputC" 
    onkeyup="this.value = this.value.replace(/^([0-9]{3}[A-Z]{3}[0-9]{1,3}|[0-9]{3}[A-Z]{1,3}|[0-9]{1,3})?.*$/, '$1')">

不过,您仍然应该进行服务器端验证。

关于Javascript Regex - 匹配比表达式短的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64447165/

相关文章:

javascript - codeigniter:如何对数组的值使用 echo 并在图表 javascript 上使用它?

JavaScript/JQuery 与 SerialPort/COM1 通信

JavaScript - 使用 concat 方法而不是 push 方法连接数组的数组

Java Pattern 类 - 使用哪个正则表达式来从外括号获取字符串?

javascript - 自定义字段映射,在 HTML/JS 中拖放

JavaScript 友好的二进制安全数据格式设计(不是 JSON 或 XML)

正则表达式 HTTP header 解析

r - 如何在 R 中提取这些多个正则表达式组

javascript - Jquery 标签删除导致换行?

JavaScript 正则表达式获取字符串中的所有匹配项