Javascript:检测字符串是否被修剪

时间:2017-04-12 05:35:42

标签: javascript regex string

我试图想出一个Regexp来检测Javascript中的字符串是否被修剪。这意味着,它在开头或结尾都没有空格。

到目前为止我已经

^[^\s].*[^\s]$

如果字符串很长,则此方法有效,但对于a这样的短字符串,它将无效,因为该模式需要非空格,任何字符,然后是另一个非空格。修剪a,但不遵循该模式。

帮我找到正确的正则表达式。

5 个答案:

答案 0 :(得分:1)

尝试使第二个字符可选:

^[^\s](.*[^\s])?$

答案 1 :(得分:1)

一个选项是获取现有的正则表达式(^[^\s].*[^\s]$)并专门为其添加一个单独的部分以测试单个非空格字符(^[^\s]$),将这两个部分与{{ 1}}:

|

但我发现有时候测试相反的情况更简单,然后用/(^[^\s]$)|(^[^\s].*[^\s]$)/ 反转结果。因此,在您的情况下,在开头或结尾处对空格进行正则表达式测试:

!

封装在一个函数中:

!/(^\s)|(\s$)/.test(someString)

答案 2 :(得分:0)

您可以使用以下正则表达式:

^([\s]+[\w]*)?([\w]*[\s]+)?$

答案 3 :(得分:0)

可能不是最好的答案,但Negative lookahead应该有效:

backup.sh

答案 4 :(得分:0)

https://laravel.com/docs/5.4/blade#loops

  • (?=^\S)在字符串开头查找非空格字符(不使用字符串匹配;将再次从第一个字符开始匹配)
  • [\W\w]*匹配任意数量的字符
  • \S$匹配字符串末尾的非空格字符

所以a

  • (?=^\S)在字符串的开头匹配a(将当前位置重置为字符串的开头)
  • [\W\w]*不匹配任何字符,因为它需要匹配下一部分
  • \S$匹配字符串
  • 末尾的a