我想要一个正则表达式,它与开头没有空格的字符串匹配。但是中间包含空格的字符串可以匹配。到目前为止,我已经在下面尝试过
[^-\s][a-zA-Z0-9-_\\s]+$
上面不允许在开头使用空格,但也不允许在字符串的中间/结尾。请帮我。
我想要一个正则表达式,它与开头没有空格的字符串匹配。但是中间包含空格的字符串可以匹配。到目前为止,我已经在下面尝试过
[^-\s][a-zA-Z0-9-_\\s]+$
上面不允许在开头使用空格,但也不允许在字符串的中间/结尾。请帮我。
在您的第二个字符类中,\\s
将匹配\
ands
和 not \s
。因此它不匹配空格。你应该在\s
那里使用。另外,将连字符移到末尾,否则会在字符类中创建无意的范围:
^[^-\s][a-zA-Z0-9_\s-]+$
您需要使用此正则表达式:
^[^-\s][\w\s-]+$
^
\s
\w
和[a-zA-Z0-9_]
如果您打算匹配与您的模式匹配且不以空格开头的任意长度的字符串(甚至是空字符串),请在之后(?!\s)
使用^
:
/^(?!\s)[a-zA-Z0-9_\s-]*$/
^^^^^^
或者,请记住,[A-Za-z0-9_]
在 JS 正则表达式中等于\w
:
/^(?!\s)[\w\s-]*$/
这(?!\s)
是一个否定的前瞻,它匹配字符串中没有紧跟空格(与\s
模式匹配)的位置。
如果您想在字符串开头添加更多“禁止”字符(看起来您也不允许-
)继续使用[\s-]
前瞻中的字符类:
/^(?![\s-])[\w\s-]*$/
要匹配至少 1 个字符,请替换*
为+
:
/^(?![\s-])[\w\s-]+$/
请参阅正则表达式演示。JS 演示:
console.log(/^(?![\s-])[\w\s-]+$/.test("abc def 123 ___ -loc- "));
console.log(/^(?![\s-])[\w\s-]+$/.test(" abc def 123 ___ -loc- "));
在开头使用 \S
^\S+[a-zA-Z0-9-_\\s]+$
此 RegEx 将不允许开头或结尾处的空格。您的字符串/单词并允许所有特殊字符。
^[^\s].+[^\s]$
这个正则表达式也可以正常工作
^[^\s]+(\s+[^\s]+)*$
/^[^.\s]/
试试这个应该可以
[a-zA-Z0-9_]+.*$
如果您的用户名字段仅接受字母和中间空格但不接受开头和结尾
用户名: /^[^\s][a-zA-Z\s]+[^\s]$/
如果您的用户 ID 字段仅接受字母、数字和下划线且不允许有空格
用户身份: /^[\w]+$/
如果您的密码字段只接受字母、数字和特殊字符,则不允许有空格
密码: /^[\w@#&]+$/
注意:\w
内容a-zA-Z
, number
, 下划线 ( _
) 如果添加更多字符,请在 . 之后添加特殊字符\w
。
您可以与密码字段中的用户 ID 和密码字段进行比较,我只添加一些特殊字符 ( @#&
)。
印度公众喜欢