自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

幺四四零的博客

时间有限、编程无限

  • 博客(106)
  • 收藏
  • 关注

原创 JavaScript常用方法

方法 描述 function() 是一个可以被其他代码或其自身调用的代码片段,或者是一个指向该函数的变量 。 Javascript构造函数 函数名第一个字母大写。 new 创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。 var 声明一个变量,并可选地将其初始化为一个值。 let 声明一个块级作用域的本地变量...

2020-04-01 17:32:31 196

原创 中英文换行

挑战:让在一起的中英文变成中英文隔行显示。例如Put your make-up on^抹.上妆容Get your nails done^漆涂指甲Curl your hair^卷起头发显示为Put your make-up on^抹.上妆容Get your nails done^整个美甲Curl your hair^卷起头发答案:<!DOCTYPE html&g...

2020-03-01 17:39:30 194

原创 03.创建堆栈类

说明在最后一节中,我们讨论了堆栈是什么,以及如何使用数组来表示堆栈。在本节中,我们将创建自己的堆栈类。尽管可以使用数组来创建堆栈,但有时最好限制我们使用堆栈的控制量。除了push和pop方法之外,堆栈还有其他有用的方法。我们给我们的stack类添加一个peek,isEmpty和clear 方法。练习编写一个将元素推送到堆栈顶部的push方法,一种删除堆栈顶部元素的pop方法,一...

2020-05-19 16:29:10 593

原创 02.了解堆栈的工作原理

说明你可能熟悉桌上的一堆书。您可能已经使用了文本编辑器的撤消功能。您也可能习惯于手机上的后退按钮,以返回到应用程序中的上一个视图。你知道他们有什么共同点吗?它们都以一种方式存储数据,以便可以向后移动。堆叠中最大的一本书是最后一页。如果您从堆栈顶部删除该书,您将会在最后一本书之前公开那本书,等等。如果您考虑到这一点,在上述所有例子中,您将获得 后进先出 服务类型。我们将尝试用我们的代...

2020-04-24 21:40:45 386

原创 01.类型化数组

说明数组是可以容纳很多不同元素的JavaScript对象。var complexArr = [1,5,"2","Word",{"name":"James"}];基本上在后台发生的情况是,您的浏览器将自动为该数组提供适当的内存空间。如果您添加或删除数据,它也将根据需要进行更改。然而,在高性能和不同元素类型的世界中,有时您需要更具体地指出数组的内存量。类型化数组 是这个问题的答...

2020-04-22 14:42:17 267

原创 05.实现归并排序

说明另一种非常常见的中间排序算法是归并排序。像快速排序一样,归并排序也使用一种分而治之的递归方法来排序数组。它利用了这样一个事实,只要每个排序首先排序,它就比较容易排序两个数组。但是我们只需要一个数组作为输入,那么我们如何从这个数组中得到两个排序的数组呢?那么我们可以递归地将原始输入分成两部分,直到我们达到一个数组的基数大小写。单项数组是自然排序的,所以我们可以开始组合。此组合将展开分割原始数...

2020-04-20 15:21:25 136

原创 04.实现快速排序

说明这里我们将介绍一种中间排序算法:快速排序。快速排序是对冒泡排序的一种改进,它是由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。简单的说,快速排序就是在数组中找一个基准值,比...

2020-04-20 14:10:19 106

原创 03.实现直接插入排序

说明我们来看下面的排序方法是插入排序中的一种--直接插入排序。插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即...

2020-04-19 14:25:43 299

原创 02.实现选择排序

说明这里我们将实现选择排序。选择排序跟冒泡有点类似,冒泡是比较相邻两个元素的大小,并交换元素,选择排序则是比较相邻元素的大小以后,记录最小元素在数组中的位置,在每趟循环结束以后交换一次元素选择排序每趟循环只交换了一次元素,因此效率比冒泡排序更高。选择排序在所有情况下都具有二次时间复杂度。任务:编写一个函数selectionSort,它将下列的数组作为输入,并按一定顺序排序以后返...

2020-04-18 18:37:11 138

原创 01.实现冒泡排序

说明这是排序算法的第一个挑战。给定一个未排序的数组,然后经过排序返回一个有顺序的数组。在接下来的算法挑战中,我们将通过几种不同的方法来实现排序,并在这些不同的方法之间学习一些权衡。虽然大多数现代语言都有内置的这种操作的排序方法,但仍然需要了解一些常见的基本方法,并了解如何实现它们。冒泡排序在这里我们将看到冒泡排序。冒泡排序通过重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错...

2020-04-16 18:17:56 151

原创 32.从开头和结尾删除空格

说明有时,字符串周围的空格字符不是需要在那里的。字符串的典型处理是在开头和结尾时删除空格。练习编写正则表达式并使用适当的字符串方法来删除字符串开头和结尾处的空格。注意.trim()方法虽然在这里可用,但是你需要使用正则表达式来完成此挑战。result应该等于"Hello, World!"。 你不应该使用.trim()方法。 result变量不应设置为等于一个字符串。 你必...

2020-04-15 22:22:15 933

原创 31.使用捕获组进行搜索和替换

说明搜索本身是有用的。但是,当更改(或替换)你匹配的文本时,你也可以使搜索更加强大。你可以使用字符串中的.replace()在字符串中搜索和替换文本。.replace()的输入首先是你要搜索的正则表达式模式。第二个参数是替换匹配的字符串或一个执行某件事的函数。var wrongText = "The sky is silver.";var silverRegex = /silver...

2020-04-15 21:53:38 929

原创 30.使用捕获组复用模式

说明你搜索的某些模式将在字符串中多次出现。手动重复正则表达式是浪费时间的。有一个更好的方法可在你的字符串中有多个重复子串时进行指定。你可以使用capture groups捕获组搜索重复的子串。括号,(and),用于查找重复的子串。你把会重复的模式的正则表达式放在括号之间。要指定重复字符串的出现位置,你可以使用反斜杠(\),然后使用数字。该数字从1开始,并随着你使用的每个附加捕获组而增加...

2020-04-15 21:36:46 1234 1

原创 29.正向和负向Lookahead

说明Lookahead是一种模式,可以让JavaScript在字符串中预先检查,以便进一步检查模式。当你想在同一个字符串中搜索多个模式时,这可能很有用。lookaheads有两种:positive lookahead正向预查和negative lookahead负向预查。positive lookahead将预查确保搜索模式中的元素在那里,但实际上不会匹配它。正向预查是使用(?=......

2020-04-14 17:30:25 640

原创 28.检查全部或无

说明有时你想要搜索的模式可能有部分可能存在或可能不存在。尽管如此,检查它们仍然很必要。你可以使用问号?指定可能存在的元素。这检查前一个元素的零或一。你可以认为这个符号是说前一个元素是可选的。例如,美英英文略有差异,你可以使用问号来匹配这两个词的拼写。var american = "color"; var british = "colour"; var rainbo...

2020-04-14 17:06:11 85

原创 27.指定匹配的准确数量

说明你可以使用大括号quantity specifiers数量说明符指定模式的下限和上限数。而有时你只想要匹配特定数量。要指定模式的特定数量,只需在大括号之间添加一个数字即可。例如,为了仅匹配"hah"中出现3次的字母a,你的正则表达式将是/ha{3}h/。var A4 = "haaaah"; var A3 = "haaah"; var A100 = "h" + ...

2020-04-14 12:06:18 576 1

原创 26.仅指定匹配的下限数

说明你可以使用大括号quantity specifiers数量说明符指定模式的下限和上限数。而有时你只想指定没有上限、有下限数的模式。要仅指定模式的下限数,请保留第一个数字,后面跟一个逗号。例如,为了仅匹配字符串"hah"与至少出现3次的字母a,你的正则表达式将是/ha{3,}h/。var A4 = "haaaah";var A2 = "haah";var A100 = "h...

2020-04-14 11:51:32 109

原创 25.指定匹配的上限和下限数

说明回想一下,使用加号+来查找一个或多个字符,使用星号*可以查找零个或多个字符。这些都很方便,但有时你想要匹配一定范围的模式。你可以使用quantity specifiers数量说明符指定模式的下限和上限数。数量说明符使用大括号({and})。你将两个数字放在大括号之间 - 模式的上限和下限数。例如,要匹配字符串"ah"中出现3到5次的a,你的正则表达式将是/a{3,5}h/。...

2020-04-14 11:43:16 833

原创 24.匹配非空格字符

说明你前面学习了使用\s搜索空格(小写的s)。你也可以搜索除空白或空格之外的所有内容。使用\S搜索非空格,这是一个大写的s。此模式将不匹配空格、回车符、制表符、换页和新行字符。你可以想象它类似于字符类[^ \r\t\f\n\v]。var whiteSpace = "Whitespace. Whitespace everywhere!"var nonSpaceRegex = /\S/...

2020-04-14 11:32:08 3136

原创 23.匹配空格

说明到目前为止的挑战,涵盖了匹配字母表的字母和数字。你也可以匹配字母之间的空白或空格。你可以使用\s搜索空格,这是一个小写的s。此模式不仅匹配空格,还包括回车、制表符、换页和新行字符。你可以将其看作与字符类[ \r\t\f\n\v]类似。var whiteSpace = "Whitespace. Whitespace everywhere!"var spaceRegex = /\s...

2020-04-14 10:49:48 575

原创 22.合理的限制用户名

说明用户名在互联网上随处可见。它们是用户喜欢的网站给用户一个独特的身份。你需要检查数据库中的所有用户名。以下是创建用户名时用户必须遵循的一些简单规则。1)用户名中唯一的数字必须在末尾。末尾可以有零个或多个数字。2)用户名字母可以是小写和大写。3)用户名必须至少有两个字符长度。双字母用户名只能使用字母表的字母字符。练习更改正则表达式userCheck以符合上面列出的规则。...

2020-04-14 10:43:27 2379 6

原创 21.匹配所有非数字

说明上一个挑战显示了如何使用小写d的快捷方式\d搜索数字。你也可以使用类似的快捷方式大写D来搜索非数字。查找非数字字符的快捷方式是\D。这等于字符类[^0-9],它查找不是零和九之间的数字的单个字符。练习使用非数字\D的shorthand character类来计算电影标题中有多少非数字。你的正则表达式应使用快捷字符匹配非数字字符。 你的正则表达式应该使用全局标志。 你的正...

2020-04-14 10:26:32 3630

原创 20.匹配所有数字

说明你已经学习了常用的字符串模式(如字母数字)的快捷方式。另一种常见的模式是寻找数字。寻找数字字符的快捷方式是\d,小写字母d。这等于character类[0-9],它查找零到九之间的任何数字的单个字符。练习使用shorthand character类\d来计算电影标题中的数字。写出数字(“六”而不是6)不是算出。你的正则表达式应该使用快捷字符匹配数字字符。 你的正则表达式应...

2020-04-14 10:19:19 653

原创 19.匹配除字母和数字外的所有

说明你已经了解到可以使用快捷方式\w匹配字母数字[A-Za-z0-9_]。你可能想要搜索与字母数字相反的自然模式。可以使用\W搜索\w的相反方向。需要注意,相反的模式使用大写字母。此快捷方式与[^ A-Za-z0-9_]相同。var shortHand = /\W/;var numbers = "42%";var sentence = "Coding!";numbers.mat...

2020-04-13 18:21:47 2268

原创 18.匹配所有字母和数字

说明使用character类,你可以使用[a-z]搜索字母表中的所有字母。这种character类是足够通用的并且有快捷方式,尽管它还包括一些额外的字符。JavaScript中与字母表匹配的最接近的character类是\w。此快捷方式等于[A-Za-z0-9_]。这个character类匹配大小写字母加数字。注意,这个character类还包括下划线字符( _ )。var long...

2020-04-13 18:10:43 722

原创 17.匹配字符串末尾的模式

说明在上一个挑战中,你学会了使用caret插入字符来搜索字符串开头的模式。还有一种方法来搜索字符串末尾的模式。你可以使用正则表达式末尾的dollar sign美元字符$搜索字符串的末尾。var toEnding = "This is a never ending story"; var storyRegex = /story$/;storyRegex.test(theEnd...

2020-04-13 12:51:51 758

原创 16.匹配字符串开头的模式

说明之前的挑战表明,正则表达式可用于查找多个匹配项。它们也用于搜索在字符串中特定位置的模式。在前面的挑战中,你使用character sets字符集中的caret插入字符(^)创建一个[^thingsThatWillNotBeMatched]形式的negated character set。在character sets之外,caret插入字符用于在字符串开头查找模式。var f...

2020-04-10 21:10:09 372

原创 15.在追捕中找到一个或多个罪犯

说明现在到了暂停休息并测试你的正则表达式写作技巧的时间。一群罪犯逃出了监狱并逃跑了,但你不知道有多少。然而,你知道当他们在其他人周围时,他们是聚在一起的。你有责任马上找到所有的罪犯。以下是一个例子来查看如何执行此操作:正则表达式/z+/匹配字符z,当z连续出现一次或多次,会在以下所有字符串中找到匹配项:"z""zzzzzz""ABCzzzz""zzzzABC""abczz...

2020-04-10 20:53:23 204

原创 14.使用懒惰匹配查找字符

说明在正则表达式中,greedy贪婪匹配找到符合正则表达式模式的字符串的最长可能部分,并将其作为匹配返回。替代方案称为lazy懒惰匹配,它找到符合正则表达式模式的字符串的最小可能部分。你可以将正则表达式/t[a-z]*i/应用于字符串"titanic"。这个正则表达式基本上是以t开始的模式,以i结尾,并且之间有一些字母。正则表达式是默认的是greedy贪婪匹配,所以...

2020-04-10 20:38:53 290

原创 13.匹配零次或更多次出现的字符

说明上一个挑战是使用加号 +符号来查找出现一次或多次的字符。还有一个匹配零次或多次出现的字符的选项。要执行此操作的字符是asterisk或star:*星号。let sWord1 = "seed"; let sWord2 = "saw"; let kWord = "kite"; let sRegex = /s.*/; //搜索以s开头的单词 sRegex...

2020-04-10 11:30:39 1244

原创 12.匹配一次或多次出现的字符

说明有时,你需要匹配一行中一次或多次出现的字符(或一组字符)。这意味着它至少出现了一次,并可能重复出现。你可以使用+字符来检查是否是这种情况。需要记住,字符或模式必须连续出现。也就是说,字符必须有重复一遍。例如,/a+/g将在"abc"中找到一个匹配,并返回["a"]。因为有+,它也会在"aabc"中找到一个匹配项,并返回["aa"]。如果它改为检查字符串"abab",它会查到两个...

2020-04-10 11:02:50 5330

原创 11.匹配未指定的单个字符

说明到目前为止,你已经创建了一组要匹配的字符,但你也可以创建一组不想匹配的字符。这种类型的字符集称为否定字符集negated character sets。要创建一个negated character sets,你可以在开括号之后,不想要匹配的字符之前放置一个caret插入字符(^)。例如,/[^aeiou]/gi匹配不是元音的所有字符。需要注意,像.,!,[,@,/和空格等字符是匹...

2020-04-09 22:08:34 154

原创 10.匹配数字和字母表的字母

说明

2020-04-09 17:20:43 226

原创 09.匹配字母表

说明你已了解如何使用character sets字符集来指定一组要匹配的字符,但是当你需要匹配一系列字符(例如字母表中的每个字母)时,会需要输入很多字符。幸运的是,有一个内置的功能可以使这个更简短和简单。在character sets中,你可以使用hyphen连字符定义要匹配的字符范围:-。例如,要匹配小写字母a到e,你将使用[a-e]。var catStr = "cat"; ...

2020-04-08 11:26:38 346

原创 08.匹配具有多种可能性的单个字符

说明你已经学习了如何匹配文字模式(/literal/)和通配符(/./)。那些是正则表达式的极端情况,其中一个查找完全匹配,另一个匹配所有内容。有在两个极端情况之间的平衡选项。你可以使用character类来灵活地搜索文字模式。character类允许你通过将其放在正方形([and])括号中来定义一组你希望匹配的字符。例如,你要匹配"bag","big"和"bug",而不是"bog"。...

2020-04-08 11:04:21 241

原创 07.使用通配符句号匹配

说明

2020-04-07 23:04:58 289

原创 06.查找多个匹配

说明到目前为止,你只能提取或搜索一次模式。var testStr = "Repeat, Repeat, Repeat";var ourRegex = /Repeat/;testStr.match(ourRegex);// 返回 ["Repeat"]要多次搜索或提取模式,你可以使用g标志。var repeatRegex = /Repeat/g; testStr.ma...

2020-04-06 11:51:38 294

原创 05.提取匹配

说明到目前为止,你只是检查字符串中是否存在模式。你还可以提取使用.match()方法找到的实际匹配项。要使用.match()方法,将方法应用于字符串,并传入括号内的正则表达式。以下是一个示例:"Hello, World!".match(/Hello/);// 返回 ["Hello"]var ourStr = "Regular expressions";var ourRegex ...

2020-04-06 11:35:48 105

原创 04.在匹配时忽略大小写

说明到目前为止,你已经看到过正则表达式进行字符串的文字匹配。但有时,你也可能想要匹配大小写差异。case(或有时是letter case)是大写字母和小写字母之间的区别。大写字母的示例是"A","B"和"C"。小写的示例是"a","b"和"c"。你可以使用所谓的标志匹配两个示例。尽管还有其他的标志,但是在这里你只需专注于忽略大小写的标志:i标志。你可以通过将其附加到正则表达式来使用。使...

2020-04-06 11:16:55 701

原创 03.匹配不同可能性的文字字符串

说明使用正则表达式,如/coding/,你可以在另一个字符串中查找模式"coding"。这在搜索单个字符串是很强大的,但它只限于一种模式。你可以使用alternation或OR运算符:|搜索多个模式。此运算符可在模式之前或之后匹配模式。例如,如果你想匹配"yes"或"no",你需要的正则表达式是/yes|no/。你也可以搜索超过两种模式,通过添加更多的模式来添加更多的OR运算符来分...

2020-04-06 11:05:22 92

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除