我对下一个任务有点无能为力。我想在"之间选择一个文字。它在标签里面但不在标签之外,即。在另一个选择中选择。
我有下一个标签:< |和|>我只想在"之间选择一个文本。以及标签之间。
< | blah blah blah" 应该被选中"未选择" 也选择它 " |> "未选择"
我想一些关于
的事情barcodeNum
但它没有用。
答案 0 :(得分:6)
我已经使用两个正则表达式来正确匹配。
var input = '<|a "b"|>c "d"ef<|"g"h "i"|>"j"k l';
var output=input.match(/<\|(.*?)\|>/g)
.map(function(x){return x.match(/"(.*?)"/g)})
alert(output)
如您所见,正确匹配“b”,“g”,“i”。
原则:
<|
和|>
(使用second answer问题中linked的正则表达式)
答案 1 :(得分:3)
I can't think of a regular expression to match what you want in one shot但是我没有看到不使用两个正则表达式的原因:
var SAMPLE_STRING = '<| blah blah blah "should be selected" not selected "select it too" |> "not selected too" <| "select it" do not select this |> "don\'t select this one too"';
var matchAll = function matchAll(regexp, str) {
var lastIndex = regexp.lastIndex;
regexp.lastIndex = 0;
var result = [];
var match;
while ((match = regexp.exec(str)) !== null) {
result.push(match[0]);
}
regexp.lastIndex = lastIndex; // so this method won't have any side effects on the passed regexp object
return result;
};
var withinTagsRegexp = /<\|([^|]|\|[^>])+\|>/g;
var withinQuotesRegexp = /"[^"]+"/g;
var withinTagsAndQuotes = [].concat.apply([], // flattens the following
matchAll(withinTagsRegexp, SAMPLE_STRING).map(
matchAll.bind(undefined, withinQuotesRegexp)));
// show the result
var resultTag = document.getElementById('result');
withinTagsAndQuotes.forEach(function(entry) {
var p = document.createElement('p');
p.innerHTML = entry;
resultTag.appendChild(p);
});
&#13;
<div id="result"></div>
&#13;
答案 2 :(得分:2)