簡體   English   中英

如何檢查字符串匹配數組的一部分

[英]How to check part of string matches array

我有這樣的數組

var invalidChars = ["^", "_", "[", "]"];

var inputText = "abc^"   - true
var inputText = "abc_"   - true
var inputText = "abc"    - false

任何人都可以讓我知道如何使用jQuery / Javascript檢查我的輸入字符串是否包含數組中的任何項目?

我嘗試了$ .InArray和indexof。 它不起作用檢查整個字符串。

你可以使用some()indexOf()

some()為數組中的每個元素執行一次回調函數,直到找到一個回調返回true值的元素。 如果找到這樣的元素,some()會立即返回true。 否則,some()返回false。 僅為已分配值的數組的索引調用回調; 對於已刪除的索引或從未分配過值的索引,不會調用它。 (摘自這里

 var invalidChars = ["^", "_", "[", "]"]; var inputText = "abc^"; var inputText1 = "abc_"; var inputText2 = "abc"; console.log( invalidChars.some(function(v) { return inputText.indexOf(v) != -1; }), invalidChars.some(function(v) { return inputText1.indexOf(v) != -1; }), invalidChars.some(function(v) { return inputText2.indexOf(v) != -1; }) ) 

對於舊瀏覽器,檢查方法some()的polyfill選項


您也可以使用正則表達式來實現結果。 使用數組生成正則表達式並檢查字符串中的匹配項。

 var invalidChars = ["^", "_", "[", "]"]; var inputText = "abc^"; var inputText1 = "abc_"; var inputText2 = "abc"; var regex = new RegExp(invalidChars.map(function(v) { return v.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&'); }).join('|')); console.log( regex.test(inputText), regex.test(inputText1), regex.test(inputText2) ) 

請參閱此答案以獲取字符串到正則表達式轉換: 將用戶輸入字符串轉換為正則表達式

使用正則表達式模式和RegExp.test方法的簡單解決方案:

var re = /[\^\[\]_]/;

console.log(re.test("abc^"));  // true
console.log(re.test("abc_"));  // true
console.log(re.test("abc"));   // false

既然你被問到jquery:

var contains, inputText;
var invalidChars = ["^", "_", "[", "]"];

inputText = "abc^"   // true
contains = $(invalidChars).filter(inputText.split('')).length > 0; // true

inputText = "abc_"   // true
contains = $(invalidChars).filter(inputText.split('')).length > 0; // true

inputText = "abc"    // false
contains = $(invalidChars).filter(inputText.split('')).length > 0; // false

暫無
暫無

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

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