-3

我有类似的字符串

8.123.351(这里有一些文字)

我用过正则表达式

/([0-9,]+(\.[0-9]{2,})+(\.[0-9]{2,})?)/

从字符串中获取值“8.123.351”。它适用于上面给出的字符串。

但是当字符串没有“。”时它不起作用。例如“179(这里有一些文字)”。我也修改了正则表达式以匹配这个值,但没有成功。

所以任何人都可以建议我使用正则表达式从字符串中获取数字,例如:

  1. 8.123.351(这里有一些文字)
  2. 179(这里有一些文字)
  3. 179.123(这里有一些文字)
  4. 179.1(这里有一些文字)
4

2 回答 2

1
/([0-9]+[,\.]?)+/ 

匹配你所有的字符串

顺便说一句...您的 RegEx 需要一个点来匹配,因为+说 1 个或多个匹配项。*为 0 或更多且?为 0 或 1

于 2012-05-10T11:24:10.473 回答
1

你不是很清楚。我做了一些假设来创建一个模式。

  1. 数字在字符串的开头
  2. 点前至少有 1 位,最多 3 位

现在我们创建你的表情

  1. 匹配行首的 1 到 3 位数字

    /^\d{1,3}/
    
  2. 可选(?在组之后)一个点和一到三个数字

    /^\d{1,3}(?:\.\d{1,3})?/
    
  3. 带点的这部分可以重复 0 次或多次(?用 a代替*

    /^\d{1,3}(?:\.\d{1,3})*/
    

    在 Regexr 上查看

如果你想阅读一些关于正则表达式的基础知识,我写了一篇关于这个的博客文章

于 2012-05-10T11:39:05.783 回答