需要基本的正则表达式帮助
Posted
技术标签:
【中文标题】需要基本的正则表达式帮助【英文标题】:Basic Regex help needed 【发布时间】:2017-08-17 22:05:33 【问题描述】:我真的是编程新手,直到现在还没有遇到过正则表达式,我希望将文本框输入限制为仅双类值并遇到了这个:
`Regex regex = new Regex("[^0-9-]+");
TextP1_TextChanged = regex.IsMatch(TextP1.Text);`
我想在我的程序中实施,并假设它发生在TextChanged
事件下,但我实际上并不具备实施正则表达式的知识,所以我只是在寻求任何帮助。
更新
我已经实现了TryParse
,但我希望接受前面带或不带0
的十进制数字,即0.234
或.234
。我的新代码是这样的:
private void TextP1_TextChanged(object sender, EventArgs e)
bool isDouble = Double.TryParse(TextP1.Text, out P1);
if(isDouble == false)
MessageBox.Show("Text box only accepts positive number values", "Text entered into P1 is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error);
【问题讨论】:
为什么不使用double.TryParse
或double.Parse
和try..catch
来测试可解析的double?
@Psi 是对的。您不需要(或不想要)Regex,而且您的问题无论如何都太宽泛了,因为它不仅询问 Regex,还询问事件处理程序以及如何将您在 Internet 上找到的代码挂钩到您的应用程序中。
我现在已经实现了它并且它可以工作,但是我需要能够接受.0234
以及0.234
有没有办法做到这一点?
当你说你已经实现了这个,你的意思是你使用了你共享的正则表达式代码还是你使用了double.TryParse
?我试过double.TryParse(".0234", out val)
,效果很好。
@adv12 我已经更新了我的问题以澄清
【参考方案1】:
你可以使用这个正则表达式[0-9]*\.[0-9]*
。 * 表示 0-9 可以出现 0 到 x 次。
您可以使用regexr 快速测试正则表达式。
【讨论】:
以上是关于需要基本的正则表达式帮助的主要内容,如果未能解决你的问题,请参考以下文章