Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 正则表达式,用于开头和结尾无空格 我想设计一个表达式,在字符串的开头和结尾处不允许空白,但允许在字符串的中间。< /P>_Angularjs_Regex_Regex Negation - Fatal编程技术网

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- ]*$")