我寫一個JavaScript函數(無jQuery的),這將收到一個字符串的下列格式之一:如何在JavaScript中檢測並解析這些字符串格式之一?
- [布拉赫] [閱讀] [胡說] [可選嗒嗒]
- [布拉赫]閱讀[布拉赫]可選等等
我要挑「閱讀」串出的休息。 「可選的等等」位可能存在也可能不存在(以及第一種情況下隨附的方括號),但它們應該沒有關係。關於如何編寫一個這樣做的函數的任何想法?
我寫一個JavaScript函數(無jQuery的),這將收到一個字符串的下列格式之一:如何在JavaScript中檢測並解析這些字符串格式之一?
我要挑「閱讀」串出的休息。 「可選的等等」位可能存在也可能不存在(以及第一種情況下隨附的方括號),但它們應該沒有關係。關於如何編寫一個這樣做的函數的任何想法?
註冊精通將做的工作:
var a = "[Blah] [Read this] [Blah] [Optional blah]";
var b = "[Blah] Read this [Blah] Optional blah";
var text1 = a.match(/\[[^\]]+\]\s*\[*([^\]\[]+)\]*\s*\[[^\]]+\]\s*(\[*[^\]]+\]*)*/)[1].trim();
var text2 = b.match(/\[[^\]]+\]\s*\[*([^\]\[]+)\]*\s*\[[^\]]+\]\s*(\[*[^\]]+\]*)/)[1].trim();
console.log(text1); // "Read this"
console.log(text2); // "Read this"
EDIT1 如果你想知道你有哪一種格式:
var a = "[Blah] [Read this] [Blah] [Optional blah]";
var b = "[Blah] Read this [Blah] Optional blah";
var text1 = a.match(/\[[^\]]+\]\s*(\[*([^\]\[]+)\]*)\s*\[[^\]]+\]\s*(\[*[^\]]+\]*)*/);
var text2 = b.match(/\[[^\]]+\]\s*(\[*([^\]\[]+)\]*)\s*\[[^\]]+\]\s*(\[*[^\]]+\]*)/);
var text1_value = text1[2].trim();
var text2_value = text2[2].trim();
var text1_is_A_format = (/\[[^\]]+\]/).test(text1[1]);
var text2_is_A_format = (/\[[^\]]+\]/).test(text2[1]);
console.log(text1_is_A_format); // true
console.log(text1_value); // "Read this"
console.log(text2_is_A_format); // false
console.log(text2_value); // "Read this"
(我加了一個()
圍繞「[閱讀] 「並檢查是否存在[]
)
編輯2
我們需要的項目
var a = "[Blah1] [Read this2] [Blah3] [Optional blah4]";
var re = new RegExp('(\\]\\s*\\[|\\s+\\[|\\]\\s+|\\[|\\])','g'); // Create reg exp (will be used 2 times)
var b = a.split(re); // Split array on every match
for(var i = b.length-1; i >= 0; i--){ // remove useless array items
// We are making a count down for because we remove items from the array
if(b[i].length == 0 || b[i].match(re))
b.splice(i, 1);
}
console.log(b); // Print : Array [ "Blah1", "Read this2", "Blah3", "Optional blah4" ]
謝謝。這工作完美。我想我應該繼續學習RegExp。是否有可能解釋像這樣的元素之間可能缺失的空間? [Blah] [閱讀] [Blah] [可選的等等]。此外,有些空間可能存在,有些可能不在任何字符串中。 – Antrikshy 2014-10-19 17:28:29
我已經做了。 '\ s'是一個空格,'\ s *'是1或者沒有空格,並且最後的修剪從沒有[]的情況中刪除空格。如果字符串中有空格,請使用'.replace'刪除它們。 – GramThanos 2014-10-19 21:54:16
已在答案上加了。 – GramThanos 2014-10-19 22:15:29
項目的陣列上分割字符串你是說要讀該位將始終[胡說]包圍?即。 [blah]我想準備好的位[blah] – 2014-10-19 01:28:30
@ net.uk.sweet是的。這是確切的格式。只有括號內的內容發生變化。假設Blah內容中不會有方括號。 – Antrikshy 2014-10-19 01:29:09