字符串开头和结尾没有空格

时间:2019-06-24 12:55:17

标签: javascript regex typescript regex-negation

在我的Angular应用程序(打字稿)中,我要检查input是否由用户插入值的开头和结尾处的空格。

以下正则表达式^[^\s].+[^\s]$及其等效的RegExp /[^\s].+[^\s]/是我找到的最常见的答案。但是此正则表达式的test函数不会返回正确的布尔值。

如果字符串的开头,结尾或两者都包含空格,则返回false的正确RegExp是什么?

function myFunction(){
var myStr=document.getElementById("reader").value;
var regex1=/[^\s].+[^\s]/;
var regex2=new RegExp('[^\s].+[^\s]','i');
var result1=regex1.test(myStr);
var result2=regex2.test(myStr);

document.getElementById("writer1").value=result1;
document.getElementById("writer2").value=result2;
}
<input id="reader" type="text" placeholder="string" onChange="myFunction()"/>
<p> regex:<input type="text" id="writer1"/></p>
<p> with constructor:<input type="text" id="writer2"/></p>

1 个答案:

答案 0 :(得分:1)

使用第一个模式^[^\s].+[^\s]$时,字符串必须至少包含3个字符,因为否定的字符类需要匹配,并且.+将匹配除换行符以外的所有字符的1倍以上。

第二个模式[^\s].+[^\s]未锚定,还将允许部分匹配。

如果您还想匹配aaa,则可以使用否定的查找方法来断言该字符串不以空格或制表符结尾,并以非空白字符开始匹配。 / p>

^(?!.*[ \t]$)\S.*$
  • ^字符串的开头
  • (?!.*[ \t]$)负向查找,断言右边的字符串末尾不是空格或制表符
  • \S匹配非空格字符
  • .*匹配除换行符外的所有char 0次以上
  • $字符串结尾

Regex demo

相关问题