我需要一个接受字母数字' -的常规字段验证器.单词之间只有一个空格



我试过使用^[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`.]+$

这意味着对于字符串中的每个空格,必须有您建议的一系列字符,并且必须以其中至少一个字符结束。

最新更新