RegEx连续验证特定字符串

时间:2019-05-13 15:38:11

标签: javascript regex

我正在尝试在JavaScript中为诸如[任意四位数字] [单个连字符] [三个字母数字字符]的字符串编写正则表达式匹配项。验证应连续进行。这意味着部分马赫数也应该返回true。

我能够验证[[任何四位数字] [单连字符]之类的字符串
1232-
4323-
但是我无法验证[三个字母数字]部分

以下是我的前两部分的正则表达式

let reg = /^[[0-9.\-]{1,6}]$/;

期望对诸如这样的字符串进行成功验证

3432-ad3
6548-333
7654-2d1
5649-dse

3 个答案:

答案 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}

enter image description here

RegEx电路

您可以在jex.im中可视化您的表情:

enter image description here

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}`);
    });
}