JS中search查找某些內容,正則表達式|查找分隔的任何項


JS中可以用indexOf來查找某個字符串里的某些內容的索引,也就是在字符串的位置。如果存在該字符串,會返回該字符串的索引,如果不存在會返回-1,可以通過某些內容的索引是否為-1判斷是否存在該字符串。
但是這個不支持正則表達式,JS里還有一個方法search方法,也可以搜索到匹配內容的索引,該方法的參數可是正則表達式,也可以接受字符串作為參數。
格式是:字符串.search(正則表達式)

該文還測試了正則表達式中的|,是查找分隔的任何項
|:查找分隔的任何項

如果是簡單的一個字符串,可以用indexOf,如果是復雜的,可以用正則。
例如該文測試中,要判斷這個字符串中是否存在“客戶端”或“客戶的”,如果要用indexOf,那么需要用||或把各種情況連接起來,如果用正則,可以直接用一個正則表達式。
此外 ,測試中,用了前面測試的那個空格\s和量詞*,表示該中間可有零個或一個或多個空格,都可匹配到,這種如果用indexOf就不可能獲取所有情況,因為中間空格的個數是不確定的。
如測試和圖示中,七種情況都匹配到了。

測試代碼:

<a href="javascript:prn_p1()">點擊獲取</a><br>
<script language="javascript" type="text/javascript">   
        var LODOP; //聲明為全局變量 
  function prn_p1(){
  var str1="官網樣例是混合部署LodopFuncs.js里已經寫好了判斷。客戶端是瀏覽器支持np插件,是32位瀏覽器,就會提示下載32位的Lodop插件:install_lodop32.exe";
console.log(str1.indexOf("客戶端"));
console.log(str1.search(/客戶端/));
console.log(str1.indexOf("客戶的"));
console.log(str1.search(/客戶的/));
if(str1.indexOf("客戶端")!==-1)
{console.log("該字符串存在\'客戶端\'");}
if(str1.indexOf("客戶的")!==-1)
{console.log("該字符串存在\'客戶的\'");}
else{console.log("該字符串不存在\'客戶的\'");}
if(str1.indexOf("客戶的")!==-1||str1.indexOf("客戶端")!==-1)
{console.log("該字符串存在\'客戶的\'或\'客戶端\'");}
console.log(str1.search(/客戶端|客戶的/));
if(str1.search(/客戶端|客戶的/)!==-1)
{console.log("這是用search加正則判斷的:該字符串存在\'客戶的\'或\'客戶端\'");}
console.log("------測試結果 indexOf不支持正則表達式----");
console.log(str1.indexOf(/客戶的/));//錯誤寫法,indexOf不支持正則參數
console.log(str1.indexOf(/客戶端/));//錯誤寫法,indexOf不支持正則參數
console.log("匹配多種情況");
var str2="selectedprinter,selected printer,selected  printer,Selected Printer,printer selected,printer  selected,打印機";//一個空格,無空格,兩個空格,首字母大寫,單詞倒過來,單詞倒過來三個空格,打印機,共7個。
//都是全局匹配,忽略大小寫
//|分隔的,只要符合其中一種就會匹配到
console.log(str2.match(/(selected\s*printer|printer\s*selected|打印機)/ig));//匹配三個情況,中間有零個或一個或多個空格的兩個單詞組或'打印機'
  };
</script> 

圖示:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM