[英]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()為數組中的每個元素執行一次回調函數,直到找到一個回調返回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; }) )
您也可以使用正則表達式來實現結果。 使用數組生成正則表達式並檢查字符串中的匹配項。
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.