JavaScript RegEx - 验证后面跟有通配符的 3 个字母数字字符

标签 javascript regex

我需要验证表单上的某些字段,在这些字段中我需要检查用户是否在通配符之前或之后输入了至少三个字符 (*)。

例如:*ABCAB1*

这就是我所拥有的:

var pattern = /^(\*\w{3})|(\w{3}\*)$/;

var matchArray = strInput.match(pattern); // Is this format okay?
if (matchArray == null) {
    return false;
} 
if (strInput.match(pattern)) {
    return true;
}
else {
    alert("You must enter at least three characters before or after a wildcard(*)\n For example- *ABC or ABC*");
}

matchArray 包含 [*112,*112,]matchArray 有 3 个组[0]=*112,[1]=*112,[2]= undefined

我的分组有问题吗?或者我是否正确添加了 OR 运算符。

最佳答案

您需要将 \*\w{3}\w{3}\* 放入一个捕获组中(并在该捕获组中使用 OR) ,像这样:

^\*\w{3}|\w{3}\*$

之前发生的情况是 \*\w{3}\w{3}\* 实际上与字符串匹配,但是每个都在一个单独的捕获组。这意味着哪个匹配也取决于它存储在的捕获组。

所以:

  • *ABC 将存储在 1st Capture Group 中(它与第一个模式 \*\w{3 })
  • ABC* 将存储在 2nd 捕获组中(它与第二个模式 \w{3}\*)

Live Demo on Regex101

关于JavaScript RegEx - 验证后面跟有通配符的 3 个字母数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36747922/

相关文章:

JavaScript:将对象数组转换为 HashMap

javascript - 如何在 Angular JS 中动态添加输入表单

java - 防止表单生成的 SQL 注入(inject) SQL - NO PreparedStmts

带有特殊字符的正则表达式环视无效?

java - 正则表达式替换java中查询参数中的值

javascript - 需要使用兄弟选择器切换/删除类

javascript - 无法覆盖 CSS 规则

c# - 将字符串与充满正则表达式的列进行匹配

javascript - JavaScript RegEx 新手——从三字串中选择中间字

javascript - 在 ES6 模板文字中插入 if 语句