問題:我得到一個AJAX響應(帶有換行符的JSON或明文)。應通過RegEx檢查每個響應項目,以確定它是否與用戶定義的模式匹配。JavaScript RegExp.test()返回false,儘管它應該返回true
實施例:
Ajax響應(純文本)
"Aldor
Aleph
Algae
Algo
Algol
Alma-0
Alphard
Altran"
用戶模式:
/^Alg/ig.test(responseItem)
正則表達式的結果應該是這樣的:
Aldor // false
Aleph // false
Algae // true
Algo // true
Algol // true
Alma-0 // false
Alphard // false
Altran // false
但是每時間我得到不同ent(和有點weired)結果...例如(/^alg/ig.test("Algo")
=>假)
我的代碼:
HTML
...
<form>
<input id="in" />
</form>
<div id="x">
Aldor
Aleph
Algae
Algo
Algol
Alma-0
Alphard
Altran
</div><button id="checker">check!</button>
...
的JavaScript(jQuery的1.6.2)
$(function(){
var $checker = $('#checker');
$checker.click(function(ev){
var inputFieldVal = $.trim($('#in').val());
console.log(inputFieldVal); // Alg
var regExpPattern = '^'+inputFieldVal,
re = new RegExp(regExpPattern, 'igm');
onsole.log(re); // /^Al/gim
// Get text out of div#x
var text = $('#x').text();
// Trim and 'convert' to an array...
text = $.trim(text).split('\n');
console.log(text); // ["Aldor", "Aleph", "Algae", "Algo", "Algol", "Alma-0", "Alphard", "Altran"]
for (var index=0, upper=text.length;index<upper;++index) {
console.log(
re.test(text[index]),
text[index]
);
}
});
})
控制檯輸出:
/^Alg/ig
=>應與Alg
false "Aldor"
false "Aleph"
true "Algae"
false "Algo" //Why ? O.o
true "Algol"
false "Alma-0"
false "Alphard"
false "Altran"
/^Al/ig
開始每個項目匹配=>應該匹配每一個項目,因爲每個項目開始
true "Aldor"
false "Aleph" //Why ? O.o
true "Algae"
false "Algo" //Why ? O.o
true "Algol"
false "Alma-0" //Why ? O.o
true "Alphard"
false "Altran" //Why ? O.o
有什麼建議?
執行'/^alg/ig.test(「Algo」)'字面上也會給你'false'嗎? – pimvdb
P.S.總的來說,我想要的不僅僅是答案中的項目,還能夠收集它們。 –
@pimvdb,no。 '/^alg/ig.test(「Algo」)'返回true –