我试图想出一个Regexp来检测Javascript中的字符串是否被修剪。这意味着,它在开头或结尾都没有空格。
到目前为止我已经
了^[^\s].*[^\s]$
如果字符串很长,则此方法有效,但对于a
这样的短字符串,它将无效,因为该模式需要非空格,任何字符,然后是另一个非空格。修剪a
,但不遵循该模式。
帮我找到正确的正则表达式。
答案 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