JS中的正则表达式:找到一个以字符开头的数字字符串

时间:2014-05-07 04:34:38

标签: javascript regex

我想找到一个数字子串。此子字符串将以句点.开头。

示例字符串: myString = 12v3i$#@.789v10vvi4e9k应该返回789

我的(非常hacky)解决方案:

  1. 查找期间.
  2. 的位置
  3. 循环遍历字符串中下一个字符,如果它在[0-9]中,则将其添加到我正在构建的字符串中。如果没有,请打破循环。
  4. 我对正则表达式很新(假设这是正确的工具),如何用正则表达式完成?

3 个答案:

答案 0 :(得分:2)

console.log(/\.(\d+)/.exec("12v3i$#@.789v10vvi4e9k")[1]);
# 789

RegEx Online Demo

Regular expression visualization

Debuggex Demo

\.将与.字符匹配(因为它在RegEx中具有特殊含义,我们需要将其转义为 \),然后再增加1位数\d+。我们只对这些数字进行分组,并使用[1]

将它们放在输出数组中

答案 1 :(得分:2)

您可以使用

var match = myString.match(/\.(\d+)/);

这将返回数组,其中第一个元素是整个匹配,第二个元素包含第一个捕获组的值(即数字)。

我希望这个表达非常简单,但不过:

  • \.字面上匹配..是表达式中的特殊字符,因此必须对其进行转义)
  • \d+匹配一个或多个数字

要了解正则表达式:http://www.regular-expressions.info/tutorial.html

答案 2 :(得分:2)

你可以这样做:

console.log("12v3i$#@.789v10vvi4e9k".match(/\.(\d+)/).pop());

\.与文字.

相匹配

\d+匹配或更多数字。