首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配带点和不带点的字符串

匹配带点和不带点的字符串
EN

Stack Overflow用户
提问于 2016-01-19 12:31:01
回答 2查看 49关注 0票数 2

现在我有这样的感觉:

([1-9]{0,9}m - [0-9]{0,9}m)

1m - 5m7m - 17m等短语相匹配。

有时字符串可能是1.5m - 5m

我怎样才能匹配这样的字符串呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-19 12:33:06

您可以使用(?:\.\d+)?添加可选的十进制部分。

代码语言:javascript
复制
([1-9]{0,9}(?:\.\d+)?m\h*-\h*\d{0,9}(?:\.\d+)?m)

请参阅regex演示

如果第一个数字可以是任意数字,请将[1-9]替换为\d

(?)指的是匹配一个文字点,后面跟着一个或多个数字,一次或零次。

\h*匹配零或多个水平空白空间。

详细信息:

  • \d9范围内的[1-9]{0,9} -0到9位数字(替换为以匹配任何数字)
  • (?:\.\d+)? -可选小数部分
  • m -文字m
  • \h* -零或更多水平空格
  • - -文字连字符
  • \h* -零或更多水平空格
  • \d{0,9} -任何数字,0到9次出现
  • (?:\.\d+)?m -见上文。

如果计划阻止与数字中的前导零匹配,但接受像101m - 5m这样的字符串,则可能需要使用

代码语言:javascript
复制
((?!0)\d{0,9}(?:\.\d+)?m\h*-\h*\d{0,9}(?:\.\d+)?m)
 ^^^^^

另一个regex演示。展望只是将一般的\d限制为不从0开始。

票数 2
EN

Stack Overflow用户

发布于 2016-01-19 13:07:12

你可以试试这个。

\d+(\.\d+){0,1}m\s-\s\d+(\.\d+){0,1}m

  • .的数字必须是digits.so认为它必须是一次,或者ZERO.so.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34876895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档