javascript - 使用正则表达式在第一个字母处分割字符串

标签 javascript regex

我有一个正则表达式,可以在第一个数字处分割字符串

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)有一句名言,他是一个非常聪明的人。事情是这样的:

Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems".

这句话有很多道理。

关于javascript - 使用正则表达式在第一个字母处分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41473838/

相关文章:

javascript - 为什么 if 语句不在全局范围内寻找变量

javascript - 如何使用 Ember.Logger 获得与 console.log 相同的输出?

regex - Google 分析的自定义过滤器 : "Mozilla Compatible Agent/iPhone"

php - preg_replace 超链接问题

java - 对上传的文档建立索引 - 只能由上传这些文档的用户搜索

javascript - 在 do/end block 中禁用 Rails form_for 提交按钮

javascript - 我想添加加 1 而不是串联,为什么它不起作用?

java - java中的正则表达式从给定字符串中查找类似${...}的模式

java - 修改 "Black Box"Servlet响应输出

java - 正则表达式:Java 中至少有 2 个符号或数字(或混合)