如何分割由JavaScript中使用正则表达式的多个部分组成的字符串
How do I split a string consisting of multiple parts of using regular expressions in JavaScript?
我在JavaScript中使用正则表达式时遇到问题。我有许多字符串需要用逗号分隔。不幸的是,子字符串周围没有引号,这会让生活更轻松。
var str1 = "Three Blind Mice 13 Agents of Cheese Super 18"
var str2 = "An Old Woman Who Lived in a Shoe 7 Pixies None 12"
var str3 = "The Cow Jumped Over The Moon 21 Crazy Cow Tales Wonderful 9"
它们的形式是PHRASE1(带空格的混合型)INTEGER1(1或两位数)PHRASE2(带空格混合型)WORD1(单字混合型,无空格)INTEGER 2(1或二位数)
所以我应该得到:
result1 = "Three Blind Mice,13,Agents of Cheese,Super,18"
result2 = "An Old Woman Who Lived in a Shoe,7,Pixies,None,12"
result3 = "A Cow Jumped Over The Moon,21, Crazy Cow Tales,Wonderful,9"
我看了txt2re.com,但没能完全得到我需要的东西,最后用手划界。但我相信这是可以做到的,尽管有一个更大的大脑。regEx有很多例子,但我找不到任何一个来处理短语;所以我想知道是否有人能帮我。非常感谢。
以下是一个适用于示例字符串的正则表达式的尝试:
/^'b((?:[a-z]+ ?)+)'b ('d{1,2}) 'b((?:[a-z]+ ?)+)'b ('b[a-z]+'b) ('d{1,2})$/i
基本上,它由五个不同的部分组成,每个部分的设计都与您的描述相匹配:
- ''b((?:[a-z]+?)+)''b=匹配由a-z组成的单词,可以选择后面跟一个空格。然后,我们尽可能多次地对其进行量化(i-flag使搜索不区分大小写)
- (''d{1,2})=匹配1或两位数字。也可以写成[0-9]
- ''b((?:[a-z]+?)+)''b=与nr 1相同
- (''b[a-z]+''b)=匹配由a-z组成的单个单词
- (''d{1,2})=与nr 2相同
需要注意的事项:
- 我已经锚定了匹配,以确保它只考虑使用
^
(主题开始)和$
(主题结束)的完整字符串 - 在正则表达式分隔符
/.../
之后,我添加了一个标志,它改变了正则表达式引擎的行为方式。i
-标志使匹配大小写不敏感 - 需要注意的是,像"it’s"这样的缩写不会与当前正则表达式匹配。您需要修改regex组1和3以适应这种情况
- 这些组由一个空格分隔。如果这可能有所不同,那么您需要修改组分隔符
您可以按如下方式使用它:
var regex = /^'b((?:[a-z]+ ?)+)'b ('d{1,2}) 'b((?:[a-z]+ ?)+)'b ('b[a-z]+'b) ('d{1,2})$/i;
var s = "The Cow Jumped Over The Moon 21 Crazy Cow Tales Wonderful 9";
s = s.replace(regex, '$1, $2, $3, $4, $5');
JS小提琴演示在这里
编辑:我已经更新了演示,创建了一个名为resultCollection
的变量来保存处理后的结果。它是一个对象,由作为键的每个原始字符串和作为值的处理后的结果字符串组成。
尝试以下操作:
var s = "Three Blind Mice 13 Agents of Cheese Super 18";
s.replace(/([^'d]+) ('d{1,2}) ([^'d]+) ([A-Z][a-z]+) ('d{1,2})/, '$1, $2, $3, $4, $5')
// "Three Blind Mice, 13, Agents of Cheese, Super, 18"
演示。
相关文章:
- 将电子邮件验证正则表达式字符串存储在JSON中
- 带有模式的正则表达式字符串
- Javascript if数组包含正则表达式字符串
- 在JSON中指定正则表达式字符串,在JavaScript和PHP中使用
- 从正则表达式文本中获取正则表达式字符串表示的最佳方式
- 正则表达式 - 字符串不能以空格开头,以空格结尾,并且连续包含几个空格
- 正则表达式 - 字符串不应包含超过 7 位数字
- 在 javascript 中将正则表达式字符串转换为正则表达式不同
- Javascript:测试单个字符在正则表达式字符串中找到
- 正则表达式(字符串比较)
- 是否可以生成与正则表达式字符串匹配的字符串
- 正则表达式字符串匹配
- 正则表达式字符串比较忽略符号
- 是否可以使用正则表达式解析正则表达式字符串
- 正则表达式字符串在文档中替换为 JavaScript
- 如何使正则表达式字符串拒绝空白字段
- 拆分正则表达式字符串
- 表示正则表达式字符串表示法
- 将HTML标记添加到此正则表达式字符串中
- 将正则表达式字符串转换为javascript中的正则表达式对象