我写一个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