我是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');
它再次返回整个字符串。这里出了什么问题?
答案 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 ', '');