从Mozilla Developer Network获取功能split():

The split() method returns the new array.

When found,separator is removed from the string and the substrings
are returned in an array. If separator is not found or is omitted,the
array contains one element consisting of the entire string. If
separator is an empty string,str is converted to an array of
characters.

If separator is a regular expression that contains capturing
parentheses,then each time separator is matched,the results
(including any undefined results) of the capturing parentheses are
spliced into the output array. However,not all browsers support this
capability.

请看以下示例:

var string1 = 'one,two,three,four';
var splitString1 = string1.split(',');
console.log(splitString1); // Outputs ["one","two","three","four"]

这是一个非常干净的方法.我尝试使用正则表达式和稍微不同的字符串:

var string2 = 'one split two split three split four';
var splitString2 = string2.split(/\ split\ /);
console.log(splitString2); // Outputs ["one","four"]

这与第一个例子一样有效.在下面的示例中,我再次更改了字符串,使用了3个不同的分隔符:

var string3 = 'one split two splat three splot four';
var splitString3 = string3.split(/\ split\ |\ splat\ |\ splot\ /);
console.log(splitString3); // Outputs ["one","four"]

但是,正则表达式现在变得相对混乱.我可以对不同的分隔符进行分组,但结果将包括这些分隔符:

var string4 = 'one split two splat three splot four';
var splitString4 = string4.split(/\ (split|splat|splot)\ /);
console.log(splitString4); // Outputs ["one","split","splat","splot","four"]

所以我尝试在离开组时从正则表达式中删除空格,但没有多大用处:

var string5 = 'one split two splat three splot four';
var splitString5 = string5.split(/(split|splat|splot)/);
console.log(splitString5);

虽然,当我删除正则表达式中的括号时,分隔符在分割字符串中消失了:

var string6 = 'one split two splat three splot four';
var splitString6 = string6.split(/split|splat|splot/);
console.log(splitString6); // Outputs ["one "," two "," three "," four"]

另一种方法是使用match()来过滤掉分隔符,除了我真的不明白反向前瞻是如何工作的:

var string7 = 'one split two split three split four';
var splitString7 = string7.match(/((?!split).)*/g);
console.log(splitString7); // Outputs ["one ","","plit two ","plit three ","plit four",""]

它与整个单词不匹配.说实话,我甚至不知道这里到底发生了什么.

如何在不使用结果中的分隔符的情况下使用正则表达式正确分割字符串?

解决方法

使用非捕获组作为拆分正则表达式.通过使用非捕获组,拆分匹配将不包含在结果数组中.
var string4 = 'one split two splat three splot four';
var splitString4 = string4.split(/\s+(?:split|splat|splot)\s+/);
console.log(splitString4);
// Output => ["one","four"]

使用.match(regex)的JavaScript拆分字符串的更多相关文章

  1. HTML5数字输入仅接受整数的实现代码

    这篇文章主要介绍了HTML5数字输入仅接受整数的实现代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. UITableViewCellAccessoryCheckmark涵盖iOS 7上的单元格分隔符

    在iOS7上使用此代码会导致分隔符视图被覆盖或缩短:如何修复分隔符视图?

  3. ios – 使用大写符号在字符串swift中获取URL的正则表达式

    我尝试在文本中获取URL.所以,在此之前,我使用了这样一个表达式:但是当用户输入带有大写符号的URL时(例如Http://Google.com,它与它不匹配)我遇到了问题.我试过了:但什么都没发生.解决方法您可以使用正则表达式中的i内联标志关闭区分大小写,有关可用正则表达式功能的详细信息,请参阅FoundationFrameworkReference.(?ismwx-ismwx)Flagsetti

  4. ios – 页脚视图的颜色总是比UITableView分隔符的颜色更暗

    在我的UITableView中,我设置了这样的分隔符颜色:我像这样设置页脚的颜色:但是,页脚视图的颜色总是比分隔符的颜色更暗,如下所示:如何让它们成为完全相同的颜色?谢谢.解决方法从iOS6.0开始,您可以使用下面提到的UITableView的委托方法来更改页脚视图的背景颜色–

  5. ios – 使用NSLayoutConstraint垂直居中两个视图

    解决方法通过这样做,我能够做到这一点:棘手的部分是恒定值.该值是所有视图高度的一半,包括它们的分隔符.这意味着,如果imageview的高度为360,按钮的高度为70,分隔符为60,则该常量将为/2=245.确实应该有一种更聪明的方式,但是现在我觉得这没关系.

  6. ios – 可以增加UITableView分隔线的厚度吗?

    我看到无处不在试图增加这条线的厚度.有没有办法以编程方式做这个?

  7. ios – 如何在Swift 3中使用正则表达式?

    解决方法我相信.当没有其他选项适用时,将使用.allZeros.因此,使用Swift3,您可以传递一个空的选项列表或省略options参数,因为它默认为无选项:要么请注意,在Swift3中,您不再使用error参数.它现在抛出.

  8. ios – 来自Swift Xcode 6中的应用程序的iPhone电话

    我检查并尝试过以前的答案,如何直接从应用程序拨打电话,但我不断收到错误.我刚刚在储物柜中制作了一个按钮,并将其连接到视图控制器.它不断给我“错误审查”,“分隔符,但这并不解决任何事情.我需要向AppDelegate或其他任何内容添加代码吗?我真的想知道在斯威夫特这样做的方式.解决方法此代码将帮助您:要么

  9. ios – lldb断点在类目标c中的所有方法

    如何使用lldb在ObjectiveC类中的所有方法上自动设置断点?

  10. ios – 在TabBar中的段之间添加分隔符

    我必须在TabBar的部分之间添加分隔符,如下图所示:我试图设置背景iamge为tabbar使用这个图像:但是当我旋转设备时我有问题.我使用的代码:此外,我尝试在图像的右侧添加一个分隔符,我用于abbar项,但没有结果.请问,请帮帮我吗?

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部