代码之家  ›  专栏  ›  技术社区  ›  Bug

正则表达式匹配点分隔列表,允许一个或多个单词

  •  0
  • Bug  · 技术社区  · 7 年前

    我需要一个正则表达式,它允许输入字符串包含一个或多个单词,但列表必须用一个点分隔。例如:

    test = OK
    test.test = OK
    test.test.1 = OK
    
    test@test = NO
    test_test = NO
    test-test1 = NO
    test. = NO
    

    我的正则表达式可以工作,但也可以接受其他符号,例如 -

    ^[a-z0-9*.\-_\.:]+$
    
    2 回复  |  直到 7 年前
        1
  •  5
  •   John    7 年前

    如果要确保它不以点开头或结尾,请使用 ^[a-zA-Z0-9]+(?:\.[a-zA-Z0-9]+)*$

    说明:

    • ^ -匹配输入的开头
    • [a-zA-Z0-9]+ -匹配字母数字序列
    • (?: -非捕获组的开始
      • \. -单打 .
      • -匹配字母数字序列
    • ) -关闭该组
    • * -重复上一组任意次数
    • $ -匹配输入的结尾

    您还可以替换 [a-zA-Z0-9] [^\W_] \w 减去 _ 性格

        2
  •  1
  •   mrzasa    7 年前

    尝试 ^[A-Za-z0-9]+(\.[A-Za-z0-9]+)*$

    • [A-Za-z0-9]+ 匹配单词(字母或数字)
    • (\.[A-Za-z0-9]+)*

    Demo