在我的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>
答案 0 :(得分:1)
使用第一个模式^[^\s].+[^\s]$
时,字符串必须至少包含3个字符,因为否定的字符类需要匹配,并且.+
将匹配除换行符以外的所有字符的1倍以上。
第二个模式[^\s].+[^\s]
未锚定,还将允许部分匹配。
如果您还想匹配a
或aa
,则可以使用否定的查找方法来断言该字符串不以空格或制表符结尾,并以非空白字符开始匹配。 / p>
^(?!.*[ \t]$)\S.*$
^
字符串的开头(?!.*[ \t]$)
负向查找,断言右边的字符串末尾不是空格或制表符\S
匹配非空格字符.*
匹配除换行符外的所有char 0次以上$
字符串结尾