Javascript 正则表达式整词模式

Javascript 正则表达式整词模式,javascript,regex,Javascript,Regex,我对正则表达式非常陌生。我的字符串如下所示: "6 years, 10 months, 1 days, 23 hours, 15 seconds" [0] = "6 years" [1] = "10 months" [2] = "1 days" [3] = "23 hours" [4] = "15 seconds" 基本上,我希望匹配时间和单词的每一部分,因此javascripts string.match生成的数组如下所示: "6 years, 10 months, 1 days, 23

我对正则表达式非常陌生。我的字符串如下所示:

"6 years, 10 months, 1 days, 23 hours, 15 seconds"
[0] = "6 years"
[1] = "10 months"
[2] = "1 days"
[3] = "23 hours"
[4] = "15 seconds"
基本上,我希望匹配时间和单词的每一部分,因此javascripts string.match生成的数组如下所示:

"6 years, 10 months, 1 days, 23 hours, 15 seconds"
[0] = "6 years"
[1] = "10 months"
[2] = "1 days"
[3] = "23 hours"
[4] = "15 seconds"
这是我所尝试的

/(\d{0,}\s(years|months|hours|days|seconds))/
但是这个正则表达式测试程序显示我在反向引用中也捕捉到了每个单词

当我试着匹配逗号时,它只是到处都是

我不知道该怎么做,我在匹配全词模式中读到的解释也不是很清楚

一如既往,谢谢大家

您可以使用更简单的正则表达式作为分隔符:

var str = '6 years, 10 months, 1 days, 23 hours, 15 seconds';
var result = str.split(/,\s*/g);
\s*正则表达式只匹配逗号后跟任意数量的空格。

您可以使用更简单的正则表达式作为分隔符:

var str = '6 years, 10 months, 1 days, 23 hours, 15 seconds';
var result = str.split(/,\s*/g);

\s*正则表达式只匹配一个逗号,后跟任意数量的空格。

如果您确实想匹配您的模式,正则表达式的主要问题是括号的放置方式。此模式将匹配单个数字单位组合:

/(\d+\s((years)|(months)|(hours)|(days)|(seconds)))/

如果您真的想要匹配现有的模式,正则表达式的主要问题是括号的放置方式。此模式将匹配单个数字单位组合:

/(\d+\s((years)|(months)|(hours)|(days)|(seconds)))/

Paulpro的答案在这里似乎是最好的,但非捕获括号?:也应该适用于您:

/(\d+\s(?:years|months|hours|days|seconds))/

Paulpro的答案在这里似乎是最好的,但非捕获括号?:也应该适用于您:

/(\d+\s(?:years|months|hours|days|seconds))/
你用分裂函数怎么样

对于regex,您可以简单地使用以下模式:

/[0-9]+\s*[a-z]/i
你用分裂函数怎么样

对于regex,您可以简单地使用以下模式:

/[0-9]+\s*[a-z]/i
为此,将g标志与正则表达式一起使用以进行全局匹配。结果以数组形式方便地返回:

var re=/\d+\s?:年|月|小时|天|秒/g; var-str=6年10个月1天23小时15秒; var myArray=str.matchre; alertmyArray; 请注意,exec一次返回一个匹配项,而match一次返回数组中的所有匹配项

请参见。

为此,将g标志与正则表达式一起使用,以进行全局匹配。结果以数组形式方便地返回:

var re=/\d+\s?:年|月|小时|天|秒/g; var-str=6年10个月1天23小时15秒; var myArray=str.matchre; alertmyArray; 请注意,exec一次返回一个匹配项,而match一次返回数组中的所有匹配项


请参阅。

关于[^,]+的说明,它将围绕非逗号字符创建组。请参阅。关于[^,]+如何,它围绕非逗号字符创建组。看,这并不能解决括号的问题;事实上,这只会使事情复杂化。现在每个匹配结果看起来都像[days,days,undefined,undefined,undefined,days,undefined]。大多数语言在其regex模块中都有match_all或类似函数,该函数将返回匹配对象数组。第一个元素是目标匹配。请看哪一个演示了使用g开关实现全局匹配。这并不能解决括号问题;事实上,这只会使事情复杂化。现在每个匹配结果看起来都像[days,days,undefined,undefined,undefined,days,undefined]。大多数语言在其regex模块中都有match_all或类似函数,该函数将返回匹配对象数组。第一个元素是目标匹配。请看哪一个演示了使用g开关来实现全局匹配。我猜他不想让它匹配10只鸽子。我相信他给出了一个字符串,我们应该根据他提供的字符串给出答案。如果他有问题,他可能会解决他们。但现在这个正则表达式起作用了。我猜他不想让它匹配10只鸽子。我相信他给出了一个字符串,我们应该根据他提供的字符串给出答案。如果他有问题,他可能会解决他们。但现在这个正则表达式有效。非常感谢,我不知道你可以通过正则表达式拆分!非常感谢,我不知道你可以通过regex拆分!谢谢你,我不知道该怎么做,我知道这是我将来会遇到的事情。因为这个,我不知道该怎么做,我知道这是我将来会遇到的事情