我在正则表达式上非常糟糕,我不知道如何处理这个问题。我想捕获()或[](包括括号)内的任何内容,之后没有任何内容。例如,如果我输入[this is text]
,我希望它能够完全返回。我还有一个json充满了用户类型的术语。如果该术语不在json上,则它不应该打印。这是与正则表达式相关的代码片段。
let sf_re = /(?:(,)\s+|\s+(xx)\s+)|\+|(,)/
if (document.querySelector(".images")){
document.querySelector(".images").innerHTML = ""
for(var i=0;i<item.length;i++){
if(/(\[(.*?)\]|\((.*?)\))/.test(item[i])){
let text = item[i]
let note = document.createElement("span")
note.innerHTML = String(text)
document.querySelector(".images").appendChild(note)
}
Here is an example of what happens
唯一应该展示的是[cat cat cat]
。 &#34;狗&#34;不应该出现,因为它不在我的名单上。在regexr它似乎工作正常。我不确定要添加什么。
编辑:我认为我原来的帖子信息不足。用户键入输入栏,使用.split()
将其拆分为数组。我的主要目标是允许用户添加少量文本。例如,如果我的json有条款&#34; cat&#34;,&#34; dog&#34;,&#34; pig&#34;并且用户键入这些术语,然后它将返回一些东西。 This is what I get using the suggestions below.请注意&#34; f&#34;第一次返回箭头,但不是第二次。我不确定为什么会这样。我可能正在使用&#34;匹配&#34;错误。我尝试了这个并且我得到了一个错误&#34;无法读取未定义的属性&#34;:
let regex = /(\[(.*?)\]|\((.*?)\))/
if (document.querySelector(".images")){
document.querySelector(".images").innerHTML = ""
for(var i=0;i<item.length;i++){
if(item[i].match(regex)[0]){
let text = item[i]
let note = document.createElement("span")
note.innerHTML = String(text)
document.querySelector(".images").appendChild(note)
}
答案 0 :(得分:0)
我还有一个json充满了用户类型的术语。如果该术语不在json上,则它不应该打印。
您可以使用
obj.hasOwnProperty(prop);
这将告诉您对象是否包含指定的道具。这是一个例子 -
var x = {
y: 10
};
alert(x.hasOwnProperty("y")); //true
alert(x.hasOwnProperty("z")); //false
&#13;
答案 1 :(得分:0)
以下是两个可以使用的简单正则表达式。一个匹配括号,另一个匹配括号。
第三种是检查其中之一的组合。不过请注意,您只能使用[ ]
和( )
中的每一个。如果你接受任何一种的多重,那么正则表达式将会中断,因为它将返回最外层的所有字符。
使用匹配它会返回一个数组,所以如果你知道你只得到一个结果,你可以抓住第一个项目,比如result和result2。如果没有,你可以像结果一样处理结果数组。
const regex = /\[.*\]/
const regex2 = /\(.*\)/
const regex3 = /(\[.*\])|(\(.*\))/g
const result = ("[cat cat cat]dog").match(regex3)[0];
const result2 = ("banana(cat cat)horse").match(regex3)[0];
const result3 = ("alfred[cat cat cat]banana(dog dog)").match(regex3);
console.log(result); //[cat cat cat]
console.log(result2); //(cat cat)
console.log(result3); // [ '[cat cat cat]', '(dog dog)' ]
&#13;
.
字符匹配任何内容,*
将重复0次或更多次。 \
字符可用于在必要时(以及任何其他特殊的正则表达式字符)转义[
,]
,(
和)
。最后的g
将检查整个字符串。
希望这足以让你不受困扰。
答案 2 :(得分:0)
正则表达式为[\[|\(](.*)[\]\)]
说明:阅读&#39; [&#39;或&#39;(&#39;,然后阅读任何内容,直到有&#39;]&#39;或&#39;)&#39;
var regexp = /[\[|\(](.*)[\]\)]/;
var match = ("[cat cat cat]dog").match(regexp);
console.log(match[1]);
&#13;