Angularjs 正则表达式,用于开头和结尾无空格 我想设计一个表达式,在字符串的开头和结尾处不允许空白,但允许在字符串的中间。< /P>
我尝试过的正则表达式是:Angularjs 正则表达式,用于开头和结尾无空格 我想设计一个表达式,在字符串的开头和结尾处不允许空白,但允许在字符串的中间。< /P>,angularjs,regex,regex-negation,Angularjs,Regex,Regex Negation,我尝试过的正则表达式是: \^[^\s][a-z\sA-Z\s0-9\s-()][^\s$]\ 这应该起作用: ^[^\s]+(\s+[^\s]+)*$ 如果要包括字符限制: ^[-a-zA-Z0-9-()]+(\s+[-a-zA-Z0-9-()]+)*$ 说明: 开头的^和结尾的$表示字符串 考虑到我给出的第一个正则表达式,[^\s]+表示至少一个非空白,\s+表示至少一个空白。还请注意,括号()将第二个和第三个片段组合在一起,结尾处的*表示该组的零个或多个。 因此,如果您看一看,表达式
\^[^\s][a-z\sA-Z\s0-9\s-()][^\s$]\
这应该起作用:
^[^\s]+(\s+[^\s]+)*$
如果要包括字符限制:
^[-a-zA-Z0-9-()]+(\s+[-a-zA-Z0-9-()]+)*$
说明:
开头的^
和结尾的$
表示字符串
考虑到我给出的第一个正则表达式,[^\s]+
表示至少一个非空白,\s+
表示至少一个空白。还请注意,括号()
将第二个和第三个片段组合在一起,结尾处的*
表示该组的零个或多个。
因此,如果您看一看,表达式是:以至少一个非空白开始,以至少一个空白后跟至少一个非空白的任意数量的组结束
例如,如果输入为“A”,则它匹配,因为它与匹配,至少以一个非空格开始。输入“AA”匹配的原因相同。输入“A A”匹配也是因为第一个A匹配至少一个非空白
条件,然后“A”匹配至少一个空白后跟至少一个非空白的任意数量的组
“A”不匹配,因为以至少一个非空白开头的条件不满足A'不匹配,因为以任意数量的组结束,这些组中至少有一个空格后跟至少一个非空格条件不满足
如果要限制在开头和结尾接受哪些字符,请参阅第二个正则表达式。我允许在开始和结束时使用a-z、a-z、0-9和()。只有这些是允许的
Regex游乐场:怎么样:
^\S.+\S$
这将匹配任何不以任何空格开头或结尾的字符串。此正则表达式将不允许在字符串/单词的开头或结尾使用空格
^[^\s].+[^\s]$
任何不以空格开头或结尾的字符串都将被匹配
说明:
^
表示字符串的开头
\s
表示空白,因此[^\s]
表示非空白。您也可以使用\S
来表示相同的内容
表示除换行以外的任何字符
+
是一个量词,表示一次或多次。这意味着,+
后面的字符可以重复一次或多次
您可以使用as RegEx备忘单
^[^\s].+[^\s]$
就这样!!!!它允许包含任何字符(来自\n的一部分)的任何字符串在开头或结尾不带空格;如果你想在中间有一个选项S,你必须用<代码> [\\n++/<代码> < /p> <代码>替换该字符串,如果字符串必须至少有1个字符长,如果中间加上新的字符和任何其他字符,第一个+最后一个字符就可以是真的,除了空白(包括@那么您正在寻找:
^\S$|^\S[\s\S]*\S$
解释和单元测试:pattern=“^[^\s]+[-a-zA-Z\s]+([-a-zA-Z]+)*$”
这将帮助您只接受字符,并且不允许在开始处使用空格或空格
^[^0-9 ]{1}([a-zA-Z]+\s{1})+[a-zA-Z]+$
-对于中间不超过一个空格的情况,在第一个和最后一个空格中不包含空格
^[^0-9 ]{1}([a-zA-Z ])+[a-zA-Z]+$
-对于中间的多个空格,第一个和最后一个空格中没有空格 这是一个正则表达式,开头和结尾都没有空格,中间只有一个空格。也可以在没有3个字符限制的情况下工作:
\^([^\s]*[A-Za-z0-9]\s{0,1}][^\s]*$\
-只需删除{0,1}并添加*
,以便在两者之间有无限的空间。作为@Aprillion答案的修改,我更喜欢:
^\S$|^\S[ \S]*\S$
- 它将不匹配开头、结尾或两者的空格
- 它匹配字符串开头和结尾的非空白字符之间的任意数量的空格
- 它还只匹配一个非空白字符(与这里的许多答案不同)
- 它将不匹配字符串中的任何换行符(\n)、\r\t\f或\v(与Aprillion的答案不同)。我意识到这个问题并不明确,但这是一个有用的区别
其他答案对比赛长度进行了限制。使用负lookahead和lookbehind可以避免这种情况:
^(?!\s)([a-zA-Z0-9\s])*?(?<!\s)$
^(?!\s)([a-zA-Z0-9\s])*?(?
首先检查第一个字符是否为空白^(?!\s)
。然后非贪婪地捕获所需的字符a-zA-Z0-9\s
(*?
),最后检查$
(字符串/行结尾)之前的字符是否为\s
检查您的平台/浏览器是否支持lookaheads/lookbehinds。字母和数字仅除以一个空格。此外,开头和结尾不允许有空格
/^[a-z0-9]+( [a-z0-9]+)*$/gi
这对我很有用:
^[^\s].+[a-zA-Z]+[a-zA-Z]+$
希望能有所帮助。如果您有一个特定的模式,例如,^[a-zA-Z0-9\s()-]+$
,您需要调整以使开始和结束处不允许出现空格,您可以使用定位在模式开始处的lookaheads:
^(?!\s)(?![\s\S]*\s$)[a-zA-Z0-9\s()-]+$
^^^^^^^^^^^^^^^^^^^^
这里,
(?!\s)
-如果(因为它在^
之后)字符串开头立即有一个空格字符,则会导致匹配失败的负前瞻
(?![\s\s]*\s$)
-如果(因为它也是在^
之后执行的,所以前一个模式是不是消费模式的环顾),则在字符串开头立即出现尽可能多的0+字符([\s\s]*
,等于[^]*
)在字符串末尾后跟一个空格字符($
)
在JS中,您可以使用以下等效的正则表达式声明:
var regex = /^(?!\s)(?![\s\S]*\s$)[a-zA-Z0-9\s()-]+$/
var regex = /^(?!\s)(?![^]*\s$)[a-zA-Z0-9\s()-]+$/
var regex = new RegExp("^(?!\\s)(?![^]*\\s$)[a-zA-Z0-9\\s()-]+$")
var regex = new RegExp(String.raw`^(?!\s)(?![^]*\s$)[a-zA-Z0-9\s()-]+$`)
如果你知道的话
var regex = /^(?!\s)(?!.*\s$)[a-zA-Z0-9\s()-]+$/
RegExp("^[a-zA-Z][a-zA-Z- ]*$")