当前位置: 首页 > 知识库问答 >
问题:

什么是正则表达式来匹配字母数字6个字符的单词,用空格或逗号分隔

章景同
2023-03-14

我是RegEx的新手,正在尝试设计一个与以下字符串匹配的RegEx:

模式1由逗号和空格分隔:KEPM39、JEMGH5、HEPM21。。。(重复)

模式2仅由空格分隔:KEPM39 JEMGH5 HEPM21。。。(重复)

模式3仅用逗号分隔:KEPM39、JEMGH5、HEPM21。。。(重复)

这是我的概念:"^[a-zA-Z0-9]{6,}[,\s]$"但它似乎是错误的。

#我想验证整个字符串,并使用javascript

#重复更改以重复更合适。

function validate(){
    var term = "JEPM34, KEPM11 ";
    var re = new RegExp("^[a-zA-Z0-9]{6,}[,\s]+$");
    if (re.test(term)) {
        return true
    } else {
        return false
    }
}

提前谢谢你!

共有2个答案

景正文
2023-03-14

如果需要一致的分隔符,并且可以有尾随空格(如示例数据中所示),则可以使用带有反向引用的捕获组来保持一致的分隔符,并在末尾匹配可选空格。

请注意,您也可以使用\s,但也可以匹配换行符。

使用test将返回一个布尔值,因此不必使用return true或false,但可以返回测试结果`

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

模式匹配:

  • ^字符串的开头
  • [A-Z\d]{6}匹配字符A-Z或数字的6次出现
  • (?:非捕获组作为一个整体进行匹配
    • (, ? | )捕获组1,匹配逗号和可选空格,或者匹配用作反向引用的空格
    • (?:[A-Z\d]{6}\1)*可选地重复列出的任何内容,后跟反向引用\1到组1,它将匹配相同的分隔符
    • [A-Z\d]{6}*匹配末尾列出的任何空格和可选空格

    正则表达式演示

    const regex = /^[A-Z\d]{6}(?:(, ?| )(?:[A-Z\d]{6}\1)*[A-Z\d]{6} *)?$/;
    const validate = term => regex.test(term);
    
    [
      "KEPM39, JEMGH5, HEPM21",
      "KEPM39 JEMGH5 HEPM21",
      "KEPM39,JEMGH5,HEPM21",
      "JEPM34, KEPM11 ",
      "JEPM34, KEPM11",
      "JEPM34",
      "KEPM39, JEMGH5 HEPM21, HEGD44    ZZZZZZ",
      "KEPM39, JEMGH5 HEPM21"
    ].forEach(s =>
      console.log(`${s} ==> ${validate(s)}`)
    );

东方新霁
2023-03-14

一种非常宽松的验证方法可能是:

^[A-Z\d]{6}(?:[ ,]+[A-Z\d]{6})*$

请参阅在线演示。使用松散,我的意思是[ ,] 没有检查您字符串中的每个分隔符是否与每个定义相同。因此,即使"KEPM39, JEMGH5 HEPM21, HEGD44 ZZZZZ"也将有效。

 类似资料:
  • 我需要在以下条件下使用C#中的正则表达式匹配字符串: 整个字符串只能是字母数字(包括空格) 最大长度不得超过15个字符(包括空格) 首先 如果这些先决条件中的任何一个被打破,比赛就不会进行。 以下是我目前掌握的情况: 下面是一些应该匹配的测试字符串: 堆栈溢出 伊姆特最伟大的 一个 超人23s 一二三 还有一些不应该匹配的(注意空格): 堆叠 [double_space] 溢流岩石 23你好 这是

  • null 匹配:“123”、“ABC123”、“ABC123”、“10.00”、“ABC.123”、“FOO10.00” 不匹配:“糖”、“拉什”、“XYZ” 在下面的示例字符串中,我想要的匹配以粗体-斜体表示:789--789 ABC 123 10.00 ABC 123 123ABC ABC 123ABC ABC 123.ABC

  • 我正在尝试使用正则表达式验证ruby类中文本字段中逗号分隔的单词字符串。以下应该是有效的: 以下内容应无效: 我以为这能行 在Rubular上,它似乎是有效的,但当我在我的类中进行如下验证时,它会接受应该是无效字符串的内容。 我不确定我的问题是在于正则表达式还是验证方法本身。感谢任何帮助。

  • 其中,我需要包括连字符和空格。 这意味着还必须可以输入值“”。

  • 我试图构建一个正则表达式来匹配这些字符串: jfldfldf ldjfdlf ldfl ldfldf 8998 dfjldjf 89dfdf DF899 ljdljf[dff]DFDFDF(fdfdf)898 要求: 字符串应仅以任何小写或大写字符(A-Z)开头 它可能包含空格或括号() 不允许任何其他特殊字符 我尝试了,但它仍然接受其他特殊字符。

  • 我试图匹配包含字母数字、连字符、下划线和空格的字符串。 连字符、下划线、空格和数字是可选的,但第一个和最后一个字符必须是字母。 例如,这些都应该匹配: 我试过这个: 但它在开始/结束时与空格、下划线或连字符匹配,但它应该只允许在两者之间。