日期:2014-05-19  浏览次数:20940 次

正则表达式 在线急求
格式为:K0+000   ~   K6+999

例如:K1+000   ~   K6+999,K1+343   ~   K10+555这些都是对的。
不对的格式举例为   :K11+343   ~   K10+555,Kd+343   ~   K1f+555,K1+343   ~   K1+5555.
在线等。谢谢啊。中间的连接必须为:~这个字符。

------解决方案--------------------
楼主具体说明下规律,光给例子就只能猜了

~前面字符串有什么规律,后面的又如何
------解决方案--------------------
按你的例子,我只能写出这样的正则来,符合你目前的要求

^K\d\+\d{3}\s*~\s*K\d+\+\d{3}$

还是具体说明下规则吧
------解决方案--------------------
^K\d[0-1]+\d{4}$
自己还没验证你试试咯!
------解决方案--------------------
目前只有lxcnn(过客) 的正则能满足楼主要求,把规则说清楚点 - -
------解决方案--------------------
K[0-9]+\+\d{3}(\s*)~\1K[0-9]+\+\d{3}
------解决方案--------------------
在什么环境下使用

正则验证控件RegularExpressionValidator里做不到,要自己写js

在程序里可以,先用这个正则验证一下格式,格式正确的再取出这两个数字比较一下就行了
------解决方案--------------------
正则似乎没有比较大小的功能哦
^K\d\+\d{3}\s*~\s*K\d+\+\d{3}$是ok了,只不过不能比较K后的大小
------解决方案--------------------
K\d{1,2}\+\d{3}\~K\d{1,2}\+\d{3}\

---------------------------------------------
MSN:bdbox@hotmail.com请给我一个与您交流的机会!
------解决方案--------------------
^(-)?(([1-9]\d{0,14})|0){1}(\.\d{1,4})?$
货币类型
------解决方案--------------------
公路,铁路测量方面的。。
用正则分析出里程,然后数值比较。不可能都靠正则来实现。
------解决方案--------------------
private void button6_Click(object sender, EventArgs e)
{
string strK = "K0+000 ~ K6+999 ";
bool blTest = isValid(strK);
if (blTest)
{
MessageBox.Show( "Valid ");
}
}

private bool isValid(string strK)
{
string strRegex = @ "^K(\d\+\d{3})\s*~\s*K(\d+\+\d{3})$ ";
Match result = Regex.Match(strK, strRegex);
if (result.Success)
{
double dK1, dK2;
string strK1, strK2;
strK1 = result.Groups[1].Value.Replace( "+ ", " ");
strK2 = result.Groups[2].Value.Replace( "+ ", " ");
if (double.TryParse(strK1, out dK1) && double.TryParse(strK2, out dK2))
{
return dK1 < dK2;
}
}
return false;
}