我需要一个允许输入字符串包含一个或多个单词的正则表达式,但列表必须仅用一个点分隔。例如:
test = OK
test.test = OK
test.test.1 = OK
test@test = NO
test_test = NO
test-test1 = NO
test. = NO
Run Code Online (Sandbox Code Playgroud)
我的正则表达式有效,但也接受其他符号,例如 -
^[a-z0-9*.\-_\.:]+$
Run Code Online (Sandbox Code Playgroud)
如果要确保它不以点开头或结尾,请使用 ^[a-zA-Z0-9]+(?:\.[a-zA-Z0-9]+)*$
解释:
^ - 匹配输入的开头[a-zA-Z0-9]+ - 匹配字母数字序列(?: - 非捕获组的开始
\. - 匹配一个 .[a-zA-Z0-9]+ - 匹配一个字母数字序列) - 关闭群组* - 重复上一组任意次数 $ - 匹配输入结束您也可以替换[a-zA-Z0-9]为[^\W_],因为这将匹配任何不是非单词也不是下划线的字符。基本上\w减去_字符。