[英]No white space in the beginning and at the end of string
在我的 Angular 應用程序(Typescript)中,我想在用戶插入的值的開頭和結尾檢查input
是否有空格。
以下正則表達式^[^\\s].+[^\\s]$
及其等效的/[^\\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>
使用第一個模式^[^\\s].+[^\\s]$
您的字符串必須至少有 3 個字符,因為否定字符類需要匹配,而.+
將匹配除換行符之外的任何字符的 1+ 次。
第二個模式[^\\s].+[^\\s]
沒有錨定,也允許部分匹配。
如果您還想匹配a
或aa
您可以使用否定環顧來斷言字符串不以空格或制表符結尾,並以非空白字符開始匹配。
^(?!.*[ \t]$)\S.*$
^
字符串開始(?!.*[ \\t]$)
否定前瞻,斷言右邊不是字符串末尾的空格或制表符\\S
匹配一個非空白字符.*
匹配任何字符 0+ 次,除了換行符$
字符串結尾
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.