我正在尝试在JavaScript中为诸如[任意四位数字] [单个连字符] [三个字母数字字符]的字符串编写正则表达式匹配项。验证应连续进行。这意味着部分马赫数也应该返回true。
我能够验证[[任何四位数字] [单连字符]之类的字符串
1232-
4323-
但是我无法验证[三个字母数字]部分
以下是我的前两部分的正则表达式
let reg = /^[[0-9.\-]{1,6}]$/;
期望对诸如这样的字符串进行成功验证
3432-ad3
6548-333
7654-2d1
5649-dse
答案 0 :(得分:0)
^[0-9]{4}-[0-9a-zA-Z]{3}$
^
-字符串的开头[0-9]{4}
-仅允许数字(0到9个字符),并且仅允许4个数字-
-破折号[0-9a-zA-Z]{3}
-允许数字(0到9),小写字母(a-z)或大写字母(A-Z)以及其中的任何3个。 $
-字符串结尾答案 1 :(得分:0)
These are examples
These are examples
These are examples
These are examples
These are examples are examples
匹配4位数字,
\d{4}
个匹配项-从字面上看
\-
匹配[a-zA-Z0-9_]中的3
\w{3}
已更新:
^\d{4}\-\w{3}$
会匹配A-Z0-9以外的其他字符,因此
\w
会更正确
匹配在-之后没有任何字符的情况:
^\d{4}\-[a-zA-Z0-9]{3}$
^\d{4}\-([a-zA-Z0-9]{3})?$
-是与a-zA-Z0-9中的3个匹配的组
([a-zA-Z0-9]{3})
是与该组中的任何一个都不匹配或完全匹配的量词
答案 2 :(得分:0)
您可以在regex101.com中设计/修改/更改表达式。您可能需要编写类似于以下内容的表达式:
[0-9]{4}-[A-Za-z0-9]{3}
您可以在jex.im中可视化您的表情:
const regex = /[0-9]{4}-[A-Za-z0-9]{3}/gm;
const str = `3432-ad3
6548-333
7654-2d1
5649-dse `;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}