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

C# 正则表达式匹配点分隔列表,允许一个或多个单词,c#,regex,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*.\-_\.:]+$ 试试^[A-Za-z0-9]+(\[A-Za-z0-9]+)*$ [A-Za-z0-9]+匹配单词(字母或数字)

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

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

test@test = NO
test_test = NO
test-test1 = NO
test. = NO
我的正则表达式可以工作,但也接受其他符号,例如
-

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

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

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

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

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

说明:

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

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

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

说明:

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

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

为什么不从正则表达式中删除其他符号呢?i、 e.
^[a-z0-9.]+$
。如果您想确保它不以点开头或结尾,请使用
^[a-z0-9]+(?:\.[a-z0-9]+)*$
为什么
测试
正常而
测试1
不正常?@John请发布您的答案,我会接受它为什么不从正则表达式中删除其他符号?i、 e.
^[a-z0-9.]+$
。如果您想确保它不以点开头或结尾,请使用
^[a-z0-9]+(?:\.[a-z0-9]+)*$
为什么
测试
正常而
测试1
不正常?@John请发布您的答案,我会接受它