使用javascript正则表达式从字符串中提取子字符串

时间:2015-12-03 07:21:01

标签: javascript regex

我是Javascript中正则表达式的新手。

字符串看起来像

Password=6)8+Ea:4n+DMtJc:W+*0>(-Y517;Persist Security Info=False;User ID=AppleTurnover;Initial Catalog=ProductDB;Data Source=Sydney

我试图从中提取

Password=6)8+Ea:4n+DMtJc:W+*0>(-Y517

来自字符串。

所以,我有:

string="`Password=6)8+Ea:4n+DMtJc:W+*0>(-Y517;Persist Security Info=False;User ID=AppleTurnover;Initial Catalog=ProductDB;Data Source=Sydney"
substring=string.match('/Password=(.*);/g');

它再次返回整个字符串。这里出了什么问题?

4 个答案:

答案 0 :(得分:7)

正则表达式不应该用引号括起来。使用[^;]+选择;之前的任何内容。

var password = string.match(/Password=([^;]+)/)[1];

string = "`Password=6)8+Ea:4n+DMtJc:W+*0>(-Y517;Persist Security Info=False;User ID=AppleTurnover;Initial Catalog=ProductDB;Data Source=Sydney";
var password = string.match(/Password=([^;]+)/)[1];

document.write(password);

或者懒惰的正则表达式也可以使用

/Password=(.*?);/g
             ^

var string = "`Password=6)8+Ea:4n+DMtJc:W+*0>(-Y517;Persist Security Info=False;User ID=AppleTurnover;Initial Catalog=ProductDB;Data Source=Sydney";
var password = string.match(/Password=(.*?);/g);
document.write(password);

答案 1 :(得分:1)

考虑基础语法/语法很有用:

string:='密码=' 密码';' ...

所以你想匹配非分号字符。

string="`Password=6)8+Ea:4n+DMtJc:W+*0>(-Y517;Persist Security Info=False;User ID=AppleTurnover;Initial Catalog=ProductDB;Data Source=Sydney"
/Password=([^;]+)/.exec(string)[0] // or [1] if you want just the password

答案 2 :(得分:0)

你可以试试这个/Password.*;/

所以你开始在开头寻找一个Password的字符串,后跟任何字符,直到你到达;

通过在RegEx末尾使用g,您可以将其设置为全局,因此您不仅要查找第一个;,还要查找每个{ "Users": { "properties" :{ "userId" : { "type" : "long" }, "payment" : { "properties":{ "paymentId": { "type": "long" } } } } 。这可能是你的工作不起作用的原因。

答案 3 :(得分:0)

避免使用潜在的保留字。

你的第一个正则表达式有效,你刚刚添加了无用的引用。删除它将有效。

var myString = "`Password=6)8+Ea:4n+DMtJc:W+*0>(-Y517;Persist Security Info=False;User ID=AppleTurnover;Initial Catalog=ProductDB;Data Source=Sydney"
var mySubstring = myString.match(/Password=(.*);Persist /g); // Remove the ' around the regex
var thePassword = mySubstring[0].replace('Password=', '');
thePassword = thePassword.replace(';Persist ', '');