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

时间:2015-07-15 19:33:41

标签: regex space

我尝试过使用^ [a-zA-Z0-9`。] * $。但它允许更多的空间。任何人都可以解释什么是"关闭"在这种背景下?任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:3)

试试这个:

/^[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/-/./`

答案 1 :(得分:1)

你的大括号里面有一个空格,并且在胡萝卜之后也是正则表达式的开头。所以你需要在文本的开头和结尾排除空格:

/^([a-z0-9\-]+\s{0,1}[a-z0-9\-]+)+$/gmi

你还希望通过转义并包含它来包含' - '字符。

https://regex101.com/

一个测试正则表达式的好网站

答案 2 :(得分:1)

这个应该做得很好:

/*#!(?#!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 `.-]*$/;

答案 3 :(得分:0)

我从你的问题中解释的内容看起来像这样。

^([a-zA-Z0-9`.]+ ?)*[a-zA-Z0-9`.]+$

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