【问题标题】:What is the regex to match alphanumeric 6 character words, separated by space or comma什么是匹配字母数字 6 字符单词的正则表达式,用空格或逗号分隔
【发布时间】:2021-02-15 08:11:26
【问题描述】:

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

用逗号和空格分隔的模式 1:KEPM39, JEMGH5, HEPM21 ...(重复)

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

模式 3 仅以逗号分隔:KEPM39,JEMGH5,HEPM21 ...(重复)

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

#我想验证整个字符串,我使用 javascript & html 来验证用户输入。 (文本区域)

#duplicate 改成重复更合适。

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

提前谢谢你!

【问题讨论】:

  • 您要拆分整个字符串还是验证整个字符串?你能包括你想要的结果吗?另外,“重复”是什么意思?包含您正在使用的应用程序也可能会有所帮助。
  • 工具或语言是什么?
  • 谢谢先生,我已经修改了我的内容。

标签: javascript regex


【解决方案1】:

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

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

见在线demo。松散的意思是[ ,]+ 没有检查字符串中的每个定界符是否与每个定义相同。因此即使"KEPM39, JEMGH5 HEPM21, HEGD44 ZZZZZZ" 也是有效的。

【讨论】:

  • 您好,先生,非常感谢。但在 javascript 中,结果似乎不是预期的:jsfiddle.net/e5d31hgt
  • @Howard,我不知道如何在代码中修复它,也许你可以使用我提供的在线演示中的代码生成器。我对 JS 的了解还不足以给你进一步的建议。
【解决方案2】:

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

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

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

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

模式匹配:

  • ^ 字符串开始
  • [A-Z\d]{6} 匹配 6 次出现的字符 A-Z 或数字
  • (?:非捕获组整体匹配
    • (, ?| ) 捕获组 1,匹配逗号和可选空格,或用作反向引用的空格
    • (?:[A-Z\d]{6}\1)* 可以选择重复列出的任何内容,后跟反向引用 \1 到组 1,这将匹配相同的分隔符
    • [A-Z\d]{6} * 匹配最后列出的任何空格和可选空格
  • )? 关闭组并使其可选以匹配不带分隔符的实例
  • $ 字符串结束

Regex demo

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 2020-01-03
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    相关资源
    最近更新 更多