我有一个正则表达式可以在第一位拆分字符串
var name = 'Achill Road Boy 1:30 Ayr'
var horsedata = name.match(/^(\D+)(.*)$/);
var horse = horsedata[1]; // "Achill Road Boy "
var meeting = horsedata[2]; // "1:30 Ayr"
但是,我现在需要进一步拆分
var meetingdata = meeting.match(?what is the regex);
var racetime = meetingdata[1]; // "1:30 "
var course = meetingdata[2]; // "Ayr"
在第一个字母处分割字符串的正则表达式是什么?
最佳答案
您可以使用单个正则表达式来做到这一点:^([^\d]+) +(\d+):(\d+) (.*)$
它将分别在组1、2、3和4中捕获名称,小时和分钟以及曲目名称。
请注意,我在表达式中添加了^和$,这意味着该表达式应该从头到尾完全匹配给定的字符串,我认为这是防止匹配字符串中最初不希望有的内容的有用防护措施。但是,它们可能会干扰您的任务,因此,如果不需要它们,可以将其删除。
在修改正则表达式时,我总是使用这个漂亮的工具http://regex101.com-它有一个非常有用的界面来调试正则表达式及其执行时间。这是上面的正则表达式的链接:https://regex101.com/r/jYgc9K/1。它还为您提供了此正则表达式的清晰明了的细分:
Full match 0-24 `Achill Road Boy 1:30 Ayr`
Group 1. 0-15 `Achill Road Boy`
Group 2. 16-17 `1`
Group 3. 18-20 `30`
Group 4. 21-24 `Ayr`
最后,提一个建议:一个非常聪明的人杰米·扎温斯基(Jamie Zawinski)有句名言。它是这样的:
有些人遇到问题时会认为“我知道,我会使用正则表达式”。现在他们有两个问题”。
这句话有很多道理。
关于javascript - 使用正则表达式在第一个字母处拆分字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41473838/