JavaScript 知识点 --》 正则表达式

JavaScript 字符串

字符串可以是插入到引号中的任何字符。你可以使用单引号或双引号:

var carname = "Volvo XC60";
var carname = 'Volvo XC60';

字符串的索引从 0 开始,这意味着第一个字符索引值为 [0],第二个为 [1],

可以使用内置属性 length 来计算字符串的长度:var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var sln = txt.length;

使用反斜杠 (\) 来转义 "Vikings" 字符串中的双引号,如下:

"We are the so-called \"Vikings\" from the north."

代码 输出
\' 单引号
\" 双引号
\\ 反斜杠
\n 换行
\r 回车
\t tab(制表符)
\b 退格符
\f 换页符

可以使用 new 关键字将字符串定义为一个对象: var firstName = new String("John")

=== 为绝对相等,即数据类型与值都必须相等

属性 描述
constructor 返回创建字符串属性的函数
length 返回字符串的长度
prototype 允许您向对象添加属性和方法
方法 描述
charAt() 返回指定索引位置的字符
charCodeAt() 返回指定索引位置字符的 Unicode 值
concat() 连接两个或多个字符串,返回连接后的字符串
fromCharCode() 将 Unicode 转换为字符串
indexOf() 返回字符串中检索指定字符第一次出现的位置
lastIndexOf() 返回字符串中检索指定字符最后一次出现的位置
localeCompare() 用本地特定的顺序来比较两个字符串
match() 找到一个或多个正则表达式的匹配
replace() 替换与正则表达式匹配的子串
search() 检索与正则表达式相匹配的值
slice() 提取字符串的片断,并在新的字符串中返回被提取的部分
split() 把字符串分割为子字符串数组
substr() 从起始索引号提取字符串中指定数目的字符
substring() 提取字符串中两个指定的索引号之间的字符
toLocaleLowerCase() 根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射
toLocaleUpperCase() 根据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射
toLowerCase() 把字符串转换为小写
toString() 返回字符串对象值
toUpperCase() 把字符串转换为大写
trim() 移除字符串首尾空白
valueOf()

返回某个字符串对象的原始值

JavaScript 运算符

算数运算符

+ 加法 x=y+2 7 5 实例 »
- 减法 x=y-2 3 5 实例 »
* 乘法 x=y*2 10 5 实例 »
/ 除法 x=y/2 2.5 5 实例 »
% 取模(余数) x=y%2 1 5 实例 »
++ 自增 x=++y 6 6 实例 »
x=y++ 5 6 实例 »
-- 自减 x=--y 4 4 实例 »
x=y-- 5 4 实例 »

赋值运算符

给定 x=10 y=5,下面的表格解释了赋值运算符:

运算符 例子 等同于 运算结果 在线实例
= x=y   x=5 实例 »
+= x+=y x=x+y x=15 实例 »
-= x-=y x=x-y x=5 实例 »
*= x*=y x=x*y x=50 实例 »
/= x/=y x=x/y x=2 实例 »
%= x%=y x=x%y x=0 实例 »

+ 运算符用于把文本值或字符串变量加起来(连接起来)。

txt1="What a very ";
txt2="nice day";
txt3=txt1+txt2;

在以上语句执行后,变量 txt3包含的值是:

What a very nice day

两个数字相加,返回数字相加的和,如果数字与字符串相加,返回字符串,如下实例:

x=5+5;
y="5"+5;
z="Hello"+5;

x,y, 和 z 输出结果为:

10
55
Hello5

比较运算符

!=  不等于 x!=8 true 实例 »
!==  不绝对等于(值和类型有一个不相等,或两个都不相等) x!=="5" true 实例 »
x!==5 false 实例 »

逻辑运算符

给定 x=6 以及 y=3,下表解释了逻辑运算符:

运算符 描述 例子
&& and (x < 10 && y > 1) 为 true
|| or (x==5 || y==5) 为 false
! not !(x==y) 为 true

条件运算符

语法

variablename=(condition)?value1:value2 

实例

如果变量 age 中的值小于 18,则向变量 voteable 赋值 "年龄太小",否则赋值 "年龄已达到"。

voteable=(age<18)?"年龄太小":"年龄已达到";

语句

  • if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码
  • if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码
  • if...else if....else 语句- 使用该语句来选择多个代码块之一来执行
  • switch 语句 - 使用该语句来选择多个代码块之一来执行

if....else if...else 语句来选择多个代码块之一来执行。

语法

if (condition1)
{
    当条件 1 为 true 时执行的代码
}
else if (condition2)
{
    当条件 2 为 true 时执行的代码
}
else
{
  当条件 1 和 条件 2 都不为 true 时执行的代码
}

switch 语句用于基于不同的条件来执行不同的动作。

语法

switch(n)

{

case 1:

执行代码块 1

break;

case 2: 执行代码块 2 break; default: 与 case 1 和 case 2 不同时执行的代码 }

首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。请使用 break 来阻止代码自动地向下一个 case 运行。

使用 default 关键词来规定匹配不存在时做的事情:

var d=new Date().getDay(); switch (d) { case 6:x="今天是星期六"; break; case 0:x="今天是星期日"; break; default: x="期待周末"; } document.getElementById("demo").innerHTML=x;

JavaScript for 循环

  • or - 循环代码块一定的次数
  • for/in - 循环遍历对象的属性
  • while - 当指定的条件为 true 时循环指定的代码块
  • do/while - 同样当指定的条件为 true 时循环指定的代码块

for 循环的语法:

for (语句 1; 语句 2; 语句 3)
{
    被执行的代码块
}

for (var i=0; i<5; i++) { x=x + "该数字为 " + i + "<br>"; }

语句 1 中初始化任意(或者多个)值:

for (var i=0,len=cars.length; i<len; i++) { document.write(cars[i] + "<br>"); }

JavaScript while 循环

语法

while (条件)
{
    需要执行的代码
}

while (i<5) { x=x + "The number is " + i + "<br>"; i++; }

语法

do
{
    需要执行的代码
}
while (条件);

实例

do { x=x + "The number is " + i + "<br>"; i++; } while (i<5);

JavaScript Break 和 Continue 语句

break 语句可用于跳出循环。

continue 语句跳出循环后,会继续执行该循环之后的代码(如果有的话):

for (i=0;i<10;i++) { if (i==3) { break; } x=x + "The number is " + i + "<br>"; }

continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。 该例子跳过了值 3:

实例

for (i=0;i<=10;i++) { if (i==3) continue; x=x + "The number is " + i + "<br>"; }

break 和 continue 语句仅仅是能够跳出代码块的语句。

continue 语句(带有或不带标签引用)只能用在循环中。

break 语句(不带标签引用),只能用在循环或 switch 中。

JavaScript typeof, null, 和 undefined

你可以使用 typeof 操作符来检测变量的数据类型。

实例

typeof "John"                // 返回 string
typeof 3.14                  // 返回 number
typeof false                 // 返回 boolean
typeof [1,2,3,4]             // 返回 object
typeof {name:'John', age:34} // 返回 object

null是一个只有一个值的特殊类型。表示一个空对象引用。

typeof 一个没有值的变量会返回 undefined

null 和 undefined 的值相等,但类型不等:

typeof undefined             // undefined
typeof null                  // object
null === undefined           // false
null == undefined            // true

JavaScript 类型转换

JavaScript 数据类型

在 JavaScript 中有 5 种不同的数据类型:

  • string
  • number
  • boolean
  • object
  • function

3 种对象类型:

  • Object
  • Date
  • Array

2 个不包含任何值的数据类型:

  • null
  • undefined

constructor 属性返回所有 JavaScript 变量的构造函数。

可以使用 constructor 属性来查看对象是否为数组 (包含字符串 "Array"):

function isArray(myArray) {
    return myArray.constructor.toString().indexOf("Array") > -1;
}

全局方法 String() 可以将数字转换为字符串。

实例

String(x)         // 将变量 x 转换为字符串并返回
String(123)       // 将数字 123 转换为字符串并返回
String(100 + 23)  // 将数字表达式转换为字符串并返回

将布尔值转换为字符串

全局方法 String() 可以将布尔值转换为字符串。

String(false)        // 返回 "false"
String(true)         // 返回 "true"

Boolean 方法 toString() 也有相同的效果。

false.toString()     // 返回 "false"
true.toString()      // 返回 "true"

Date 方法 章节中,你可以查看更多关于日期转换为字符串的函数:

方法 描述
getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getFullYear() 从 Date 对象以四位数字返回年份。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。

全局方法 Number() 可以将字符串转换为数字。

Number("3.14")    // 返回 3.14
Number(" ")       // 返回 0
Number("")        // 返回 0
Number("99 88")   // 返回 NaN

一元运算符 +

Operator + 可用于将变量转换为数字:

实例

var y = "5";      // y 是一个字符串
var x = + y;      // x 是一个数字

将布尔值转换为数字

全局方法 Number() 可将布尔值转换为数字。

Number(false)     // 返回 0
Number(true)      // 返回 1

原始值 转换为数字 转换为字符串 转换为布尔值 实例
false 0 "false" false 尝试一下 »
true 1 "true" true 尝试一下 »
0 0 "0" false 尝试一下 »
1 1 "1" true 尝试一下 »
"0" 0 "0" true 尝试一下 »
"000" 0 "000" true 尝试一下 »
"1" 1 "1" true 尝试一下 »
NaN NaN "NaN" false 尝试一下 »
Infinity Infinity "Infinity" true 尝试一下 »
-Infinity -Infinity "-Infinity" true 尝试一下 »
"" 0 "" false 尝试一下 »
"20" 20 "20" true 尝试一下 »
"Runoob" NaN "Runoob" true 尝试一下 »
[ ] 0 "" true 尝试一下 »
[20] 20 "20" true 尝试一下 »
[10,20] NaN "10,20" true 尝试一下 »
["Runoob"] NaN "Runoob" true 尝试一下 »
["Runoob","Google"] NaN "Runoob,Google" true 尝试一下 »
function(){} NaN "function(){}" true 尝试一下 »
{ } NaN "[object Object]" true 尝试一下 »
null 0 "null" false 尝试一下 »
undefined NaN "undefined" false 尝试一下 »

JavaScript 正则表达式

语法

/正则表达式主体/修饰符(可选)

实例:

var patt = /runoob/i

实例解析:

/runoob/i  是一个正则表达式。

runoob  是一个正则表达式主体 (用于检索)。

search() 方法使用正则表达式

实例

使用正则表达式搜索 "Runoob" 字符串,且不区分大小写:

var str = "Visit Runoob!"; var n = str.search(/Runoob/i);

replace() 方法使用正则表达式

实例

使用正则表达式且不区分大小写将字符串中的 Microsoft 替换为 Runoob :

var str = document.getElementById("demo").innerHTML; var txt = str.replace(/microsoft/i,"Runoob");

结果输出为:

Visit Runoob!

修饰符 描述
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。
\d 查找数字。
\s 查找空白字符。
\b 匹配单词边界。
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。
量词 描述
n+ 匹配任何包含至少一个 n 的字符串。
n* 匹配任何包含零个或多个 n 的字符串。
n? 匹配任何包含零个或一个 n 的字符串。

test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。

var patt = /e/;
patt.test("The best things in life are free!");

字符串中含有 "e",所以该实例输出为:

true

exec() 方法用于检索字符串中的正则表达式的匹配。

/e/.exec("The best things in life are free!");

字符串中含有 "e",所以该实例输出为:

e

猜你喜欢

转载自blog.csdn.net/kaiya4230/article/details/82820008