用正则取两则之间的数字?(c#和javascript两种方式)
d0s0s3t1p0to99999i3m0to99999c50m1rp1.htm
如有一个函数 string[] test(string start, string end)
调用时:test("s","s") 返回0,3
test("p","to") 返回0,99999
test("m","to") 返回0,99999
d0s0s3t1p0to99999i3m0to99999c50m1rp1.htm
如有一个函数 string[] test(string start, string end)
调用时:test("s","s") 返回0,3
test("p","to") 返回0,99999
test("m","to") 返回0,99999
public string[] GetString(string s1, string s2)
{
Regex reg = new Regex(String.Format("{0}([\d]+){1}([\d]+)", s1, s2));
Match mat = reg.Match(s);
if(mat.Success) return new string[]{ mat.Groups[1].Value, mat.Groups[2].Value };
else return null;
}
private void GetDigit(string input, string start, string end, out int startDigit, out int endDigit)
{
Regex reg = new Regex(string.Format("{0}(?<StartDigit>[\\d]+).*{1}(?<EndDigit>[\\d]+)",start,end));
Match m = reg.Match(input);
startDigit = endDigit = int.MinValue;
if(m.Success && m.Groups.Count >=3)
{
int.TryParse(m.Groups["StartDigit"].Value,out startDigit);
int.TryParse(m.Groups["EndDigit"].Value,out endDigit);
}
Console.WriteLine(string.Format("start digit:{0},end digit:{1}", startDigit, endDigit));
}
string str = "d0s0s3t1p0to99999i3m0to99999c50m1rp1.htm";
int startDigit,endDigit; GetDigit(str,"d","s",out startDigit,out endDigit);
GetDigit(str,"p","to",out startDigit,out endDigit);
GetDigit(str,"c","m",out startDigit,out endDigit); /*输出 start digit:0,end digit:3
start digit:0,end digit:99999
start digit:50,end digit:1 */
{
Regex reg = new Regex(string.Format("{0}(\\d+){1}(\\d+)", Regex.Escape(start), Regex.Escape(end)));
Match m = reg.Match(src);
if (m.Success)
{
return new string[]{m.Groups[1].Value, m.Groups[2].Value};
}
else
return null;
}
//调用
string str = "d0s0s3t1p0to99999i3m0to99999c50m1rp1.htm";
string[] result = test(str, textBox1.Text, textBox2.Text);
if (result != null)
richTextBox2.Text += result[0] + "\n" + result[1];javascript中MS就没有这样的函数了
<script type="text/javascript">
document.close();
document.open(); var str= "d0s0s3t1p0to99999i3m0to99999c50m1rp1.htm";
var result = test(str, "to", "i");
for(var i=1; i<result.length; i++)
{
document.write(result[i]);
document.write("<br>");
} function test(src, start, end)
{
var re = new RegExp(start + "(\\d+)" + end + "(\\d+)", "i");
return src.match(re);
}
</script>