第一个括号之间的Javascript正则表达式字符串,包括内括号
我有这样的绳子第一个括号之间的Javascript正则表达式字符串,包括内括号,javascript,regex,Javascript,Regex,我有这样的绳子 [test: test1: http://localhost?test=[1,2]] [test: test2: http://localhost?test=[2,3]] 我想从上面的文本中摘录以下内容 $1 = "test1" $2 = "http://localhost?test=[1,2]" $1 = "test2" $2 = "http://localhost?test=[2,3]" 我想做的是 /\[test:(.*?):(.*?)\]/ 但它是这样回来的。没有
[test: test1: http://localhost?test=[1,2]]
[test: test2: http://localhost?test=[2,3]]
我想从上面的文本中摘录以下内容
$1 = "test1"
$2 = "http://localhost?test=[1,2]"
$1 = "test2"
$2 = "http://localhost?test=[2,3]"
我想做的是
/\[test:(.*?):(.*?)\]/
但它是这样回来的。没有“]””
如何更改我的regexp以获得我想要的?谢谢。您的正则表达式的一个修复方法是将
]
包含在第二组中:
/\[test:(.*?):(.*?\])\]/
// add this ------^^
另一个修复方法是,只有在正则表达式位于字符串末尾时,才将现有的\]
放在正则表达式的末尾:
/\[test:(.*?):(.*?)\]$/
我猜,你会得到一个URL作为第二个参数。 要创建一个包含所有可能URL值的正确正则表达式真的不太容易
[test: test1: http://localhost?test=[1,2]]
[test: test1: http://localhost?test=[1,2]&somekey=somevalue]
[test: test1: http://localhost?test=[1,2]&answers=[1,2,3]]
你自己也试图找到这样的regexp。你来到这里,问了这个问题,花了那么多的时间试图找到一个合适的正则表达式。
即使你现在找到了这样的正则表达式,你真的需要它吗
正如一句流行的格言所说:
有些人在遇到问题时会想“我知道,我会使用正则表达式。”现在他们有两个问题 这取决于您的选择,我只能推荐,但有一种简单,快速的方法,可以处理输入中给出的任何数据:
var str = "[test: test1: http://localhost?test=[1,2]]";
str = str.substring(1, str.length - 1);
var vals = str.split(': ');
console.log(vals[1]);
console.log(vals[2]);
没有正则表达式,没有头痛。我不想说“不要使用正则表达式”,我想说“不需要时不要使用它”:)使用简单的字符串函数更容易、更快地解决了这个问题。您可以删除第一个和最后一个大括号中的一个,然后使用
/test:(.*):(.*)/
。或者您可以使用字符串拆分。它不适用于输入[测试:测试2:http://localhost?test=[2,3]&something=something]
@YeldarKurmangaliyev-那么?这不是OP询问的格式。它适用于指定的输入。不管怎样,我刚刚添加了第二个变体,可以使用。谢谢你们两位!第二个案例正是我需要的。谢谢你的建议。我也考虑过不使用正则表达式,因为我不习惯它。。。但在我的例子中,示例字符串位于其他大量文本中,因此我不能使用split。
var str = "[test: test1: http://localhost?test=[1,2]]";
str = str.substring(1, str.length - 1);
var vals = str.split(': ');
console.log(vals[1]);
console.log(vals[2]);