簡體   English   中英

字符串開頭和結尾沒有空格

[英]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]沒有錨定,也允許部分匹配。

如果您還想匹配aaa您可以使用否定環顧來斷言字符串不以空格或制表符結尾,並以非空白字符開始匹配。

^(?!.*[ \t]$)\S.*$
  • ^字符串開始
  • (?!.*[ \\t]$)否定前瞻,斷言右邊不是字符串末尾的空格或制表符
  • \\S匹配一個非空白字符
  • .*匹配任何字符 0+ 次,除了換行符
  • $字符串結尾

正則表達式演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM