还是正规表达式的问题

xiongying18 2011-01-27 10:38:40
要求
1)第一位字符必须是X,后面必须是有效数字或者什么也没有。
2)数字可以为负数,小数,整数。
3)小数的整数部分是0的时候,0可以省略如-.365
4)整数后面可以以有小数点如189.
3)现在使用这个^X(-?\.?\d+)?(-?\d+\.?\d*)?$,可是有问题X.33-33也可以匹配。


下面的是刚写的,还有没有好的写法呀
^X(?<x1>-?\d+)$|^X(?<x1>-?\d*\.\d+)$|^X(?<x1>-?\d+\.\d*)$
...全文
111 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
-过客- 2011-01-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiongying18 的回复:]
红色的是不能通过
[/Quote]

按楼主的要求
^X(?!([-.]|-\.)$)-?\d*\.?\d*$
兔子-顾问 2011-01-28
  • 打赏
  • 举报
回复
写了一个,但写的好啰嗦。。。
(?m)^X-?(\d+\.\d*|\d*\.\d+|\d+)?(?!-\.?|(?<!\d)\.)\b

机器人 2011-01-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xiongying18 的回复:]
(?<!(\-\.?))这是什么意思呀
[/Quote]

不能以 - 或者 -. 结束。
xiongying18 2011-01-28
  • 打赏
  • 举报
回复
红色的是不能通过

X
X-
X.
X-.
X0.
X.1
X1
X-2
X-.3
X-.30
X3.
X-4.
X5.1
X06.
X-78.9
X.012
-过客- 2011-01-28
  • 打赏
  • 举报
回复

^X-?([1-9]\d*|0?)\.?\d*$
//or
^X-?(?!0\d)\d*\.?\d*$


上面做了基本的限制,没有做更详细的限制,需要楼主明确以下用例,哪些能通过,哪些不能通过

X
X-
X.
X-.
X0.
X1
X-2
X3.
X-4.
X5.1
X06.
X-78.9
X.012
xiongying18 2011-01-28
  • 打赏
  • 举报
回复
(?<!(\-\.?))这是什么意思呀
机器人 2011-01-28
  • 打赏
  • 举报
回复
再缩减

^X(\-?\d*\.?\d*)(?<!(\-\.?))$
机器人 2011-01-28
  • 打赏
  • 举报
回复
再缩减点

^X(\-?\d*(\.\d*)?)(?<!(\-\.?))$
机器人 2011-01-28
  • 打赏
  • 举报
回复
^X((\-?\d+)|(\-?\d*\.\d*))?(?<!\-\.)$

试试这个。

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧