我试过使用^[a-zA-Z0-9]。* $。但它允许更多的空间。谁能解释一下在这种情况下什么是"封闭"?
试试这个:
/^[a-z0-9-.`]+s{0,1}[a-z0-9-.`]+$/gmi
Regex live here.
解释:^[a-z0-9-.`]+ # starts with at least one letter/number/-/./`
s{0,1} # must or not contain one space - same as: 's?'
[a-z0-9-.`]+$ # ends with at least one letter/number/-/./`
这个应该做得很好:
/*#!(?#!js valid Rev:20150715_1300)
# Validate alphabets numbers `-. and only one space.
^ # Anchor to start of string.
(?=[^ ]+(?:[ ][^ ]+)*$) # Only one space between words.
[a-zA-Z0-9 `.-]* # One or more allowed chars.
$ # Anchor to end of string.
!#*/
var valid = /^(?=[^ ]+(?: [^ ]+)*$)[a-zA-Z0-9 `.-]*$/;
括号中有一个空格,并且在胡萝卜之后的正则表达式的开始处。所以你需要排除文本开头和结尾的空格:
/^([a-z0-9-]+s{0,1}[a-z0-9-]+)+$/gmi
您还希望通过转义并包含'-'字符来包含它。
https://regex101.com/一个很好的测试正则表达式的网站我从你的问题中得到的解释是这样的。
^([a-zA-Z0-9`.]+ ?)*[a-zA-Z0-9`.]+$
这意味着对于字符串中的每个空格,必须有您建议的一系列字符,并且必须以其中至少一个字符结束。