Javascript Regex不允许在末尾使用空格

Javascript Regex不允许在末尾使用空格,javascript,regex,Javascript,Regex,我的目标是改进我的正则表达式。除了一些特殊字符外,正则表达式需要修改所有字符,不允许在开头使用空格,也不允许在结尾使用空格 ^(?!\s*$)[^-\s][^`=~!@#$%^&*()[\]\/\\{}"|<>?]{3,100}$ ^(?!\s*$)[^-\s][^`=~!@\\$%^&*()[\]\/\\\{}”\\\\}?]{3100}$ 例如: word有效 字[空格]无效 [space]字无效 单词w有效 我的正则表达式完成了除结尾处的空格以外的所有操作。如何将此

我的目标是改进我的正则表达式。除了一些特殊字符外,正则表达式需要修改所有字符,不允许在开头使用空格,也不允许在结尾使用空格

^(?!\s*$)[^-\s][^`=~!@#$%^&*()[\]\/\\{}"|<>?]{3,100}$
^(?!\s*$)[^-\s][^`=~!@\\$%^&*()[\]\/\\\{}”\\\\}?]{3100}$
例如:

word
有效

字[空格]
无效

[space]字
无效

单词w
有效


我的正则表达式完成了除结尾处的空格以外的所有操作。如何将此条件添加到正则表达式结尾处的forbit空格?

您可以添加另一个负前瞻,以禁止结尾处的空格:

^(?!\s*$)(?![^]*\s$)(?![-\s])[^`=~!@#$%^&*()[\]\/\\{}"|<>?]{3,100}$
^(?!\s*$)(?![^]*\s$)(?![-\s])[^`=~!@\\$%^&*()[\]\/\\\{}”|?]{3100}$
(?![^]*\s$)
是一个负的前瞻性语句,表示您的正则表达式在结尾不允许有空格


+
{3100}
之后没有任何意义。@Barmar注意到,出于好奇,我将删除它,这是干什么用的?我注意到,它允许任意unicode,但不允许通用标点符号,这似乎不寻常
(?!.\s$)
对于可能匹配多行文本的通用模式是一个错误的建议。它必须是
(?![^]*\s$)
(?![\s]*\s$)
好点Wiktor,已编辑。