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

时间:2018-11-27 14:07:41

标签: c# regex

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

test = OK
test.test = OK
test.test.1 = OK

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

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

^[a-z0-9*.\-_\.:]+$

2 个答案:

答案 0 :(得分:4)

如果要确保它不是以点开头或结尾,请使用<widget xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.zkoss.org/2005/zul"> <style src="${wr}/default.css"/> <div> <hlayout> <textbox id="searchInput"/> <button id="searchBtn" label="Search"/> </hlayout> </div>

说明:

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

您也可以将$替换为[a-zA-Z0-9],因为这将匹配非单词且不带下划线的任何字符。基本上是[^\W_]减去\w字符。

答案 1 :(得分:1)

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

  • [A-Za-z0-9]+匹配一个单词(字母或数字)
  • (\.[A-Za-z0-9]+)*-匹配以下以点号分隔的单词

Demo