字符串
一况木、字符串的屬性
-
字符串的屬性
length: 表示字符串的長度
例如 :
var str = “howareyou”; console.log(str.length); console.log(str[0]); //獲取字符串中對(duì)應(yīng)下標(biāo)的字符
-
注意: ECMAScript 中的字符串是不可變的; 也就是說乃坤,字符串一旦創(chuàng)建,它們的值就不能改變.
例如:
var str = “親,包郵哦”; str[0] = “唉”; //不會(huì)改變
如果要改變某個(gè)變量保存的字符串弄贿,首先要銷毀原來的字符串春锋,然后再用另一個(gè)包含新值的字符串填充該變量.
var str = “Hello”; str = str+” world!”;
二、字符串的方法
字符串的方法(函數(shù))
var str = 'ab';
str.charAt(3); 獲取下標(biāo)為3的字符
str.charCodeAt(3); 獲取下標(biāo)為3的字符的編碼(ASCII碼)
-
String.fromCharCode(94); ASCII編碼轉(zhuǎn)換成字符
該方法是String的靜態(tài)方法差凹,所以用String調(diào)用看疙,
如:var str = String.fromCharCode(98,99); //可傳入多個(gè)參數(shù)
ASCII(AmericanStandard Code for Information Interchange豆拨,美國標(biāo)準(zhǔn)信息交換代碼)
-
str.concat(); 連接字符串
例如:
var str1 = “hello”; var str2 = str1.concat(“ world”);
-
字符串的查找方法
str.indexOf(“abc”); 查找字符串第一次出現(xiàn)的位置,如果沒找到則返回-1
例如:
var str = "abcdabcd"; var subStr = “bcd”; var index = str.indexOf(subStr);
-
str.lastIndexOf(“abc”); 查找字符串最后一次出現(xiàn)的位置,如果沒找到則返回-1
例如: var index = str.lastIndexOf(“abc”);
-
str.search(); 正則匹配(返回第一次出現(xiàn)的位置)
例如:
var str = ”Abcdabcd"; var index = str.search(/abc/i);
注: g表示進(jìn)行全局匹配直奋,i表示匹配的時(shí)候忽略大小寫
-
str.replace(); 替換字符串
例如:
var str = "how are Are are you!"; //替換一次 var newStr = str.replace("are", "old are"); //替換多次 var newStr = str.replace(/are/g, "x"); console.log(newStr)
這里的替換只能執(zhí)行一次能庆,不能夠進(jìn)行全局匹配,如果需要全局匹配脚线,則應(yīng)使用正則表達(dá)式
-
str.substring(start,end); 截取字符串范圍是[start,end)
例如:
var str= "Helloworld!"; console.log(str.substring(2,5));
注:如果只有一個(gè)參數(shù), 則表示到字符串最后
-
str.split(separator, howmany); 根據(jù)分隔符搁胆、拆分成數(shù)組
separator(字符串或正則表達(dá)式)
-
howmany(可以指定返回的數(shù)組的最大長度,可以省略)
注:如果空字符串(“”)用作separator,那么stringObject中的每個(gè)字符之間都會(huì)被分割。
-
大小寫轉(zhuǎn)換
str.toLowerCase();把字符串轉(zhuǎn)換成小寫
str.toUpperCase();把字符串轉(zhuǎn)換成大寫
三邮绿、Math對(duì)象
-
Math對(duì)象
Math對(duì)象可以用于執(zhí)行數(shù)學(xué)任務(wù)
-
Math對(duì)象的常用函數(shù):
- Math.round(3.6) //四舍五入
- Math.random() //返回0-1之間的隨機(jī)數(shù)
- Math.max(num1, num2) //返回較大的數(shù)
- Math.min(num1, num2) //返回較小的數(shù)
- Math.abs(num) //絕對(duì)值
- Math.ceil(19.3) //向上取整
- Math.floor(11.8) //向下取整
- Math.pow(x,y) //x的y次方
- Math.sqrt(num) //開平方
- Math.sin(x)//返回?cái)?shù)的正弦
四渠旁、正則表達(dá)式的概念
1、正則表達(dá)式修飾符
修飾符 可以在全局搜索中不區(qū)分大小寫:
修飾符 | 描述 |
---|---|
i | 執(zhí)行對(duì)大小寫不敏感的匹配船逮。 |
g | 執(zhí)行全局匹配(查找所有匹配而非在找到第一個(gè)匹配后停止)顾腊。 |
m | 執(zhí)行多行匹配。 |
2挖胃、正則表達(dá)式模式
方括號(hào)用于查找某個(gè)范圍內(nèi)的字符:
表達(dá)式 | 描述 |
---|---|
[abc] | 查找方括號(hào)之間的任何字符杂靶。 |
[0-9] | 查找任何從 0 至 9 的數(shù)字。 |
(x|y) | 查找任何以 | 分隔的選項(xiàng)酱鸭。 |
3吗垮、元字符是擁有特殊含義的字符:
元字符 | 描述 |
---|---|
\d | 查找數(shù)字。 |
\D | 非數(shù)字 |
\w | 數(shù)字字母下劃線 |
\W | 非數(shù)字字母下劃線 |
\s | 查找空白字符凹髓。 |
\b | 匹配單詞邊界烁登。 |
\uxxxx | 查找以十六進(jìn)制數(shù) xxxx 規(guī)定的 Unicode 字符。 |
4蔚舀、量詞
量詞 | 描述 |
---|---|
n+ | 匹配任何包含至少一個(gè) n 的字符串饵沧。 |
n* | 匹配任何包含零個(gè)或多個(gè) n 的字符串。 |
n? | 匹配任何包含零個(gè)或一個(gè) n 的字符串赌躺。 |
5狼牺、方法
-
match 方法
使用正則表達(dá)式模式對(duì)字符串執(zhí)行查找,并將包含查找的結(jié)果作為數(shù)組返回寿谴。
stringObj.match(rgExp)參數(shù)
stringObj
必選項(xiàng)锁右。對(duì)其進(jìn)行查找的 String 對(duì)象或字符串文字。
rgExp
必選項(xiàng)讶泰。為包含正則表達(dá)式模式和可用標(biāo)志的正則表達(dá)式對(duì)象咏瑟。也可以是包含正則表達(dá)式模式和可用標(biāo)志的變量名或字符串文字。
其余說明與exec一樣痪署,不同的是如果match的表達(dá)式匹配了全局標(biāo)記g將出現(xiàn)所有匹配項(xiàng)码泞,而不用循環(huán),但所有匹配中不會(huì)包含子匹配項(xiàng)狼犯。-
實(shí)例
var str="Hello world!" document.write(str.match("world") + "<br />") document.write(str.match("World") + "<br />") document.write(str.match("worlld") + "<br />") document.write(str.match("world!")) 輸出: world null null world! var str="1 plus 2 equal 3" console.log(str.match(/\d+/g)) // [1,2,3]
-
exec 方法
是一個(gè)正則表達(dá)式方法余寥。
該方法用于檢索字符串中的正則表達(dá)式的匹配领铐。
該函數(shù)返回一個(gè)數(shù)組,其中存放匹配的結(jié)果宋舷。如果未找到匹配绪撵,則返回值為 null。
rgExp.exec(str)- 實(shí)例
/e/.exec("The best things in life are free!");
-
test 方法
test() 方法用于檢測(cè)一個(gè)字符串是否匹配某個(gè)模式祝蝠,如果字符串中含有匹配的文本音诈,則返回 true,否則返回 false绎狭。
rgexp.test(str)- 實(shí)例
var patt = /e/; patt.test("The best things in life are free!"); /^1[3-8][0-9]{9}$/.test('15611833906')
-
search 方法
search 方法可使用字符串作為參數(shù)细溅。字符串參數(shù)會(huì)轉(zhuǎn)換為正則表達(dá)式:
返回與正則表達(dá)式查找內(nèi)容匹配的第一個(gè)子字符串的位置(偏移位)。
stringObj.search(rgExp)- 實(shí)例
var str="Visit lucky!" document.write(str.search(/lucky/i))
-
replace 方法
返回根據(jù)正則表達(dá)式進(jìn)行文字替換后的字符串的復(fù)制儡嘶。
stringObj.replace(rgExp, replaceText)-
實(shí)例
<p>替換 "microsoft" 為 "Runoob" :</p> <button onclick="myFunction()">點(diǎn)我</button> <p id="demo">Visit Microsoft!</p> <script> function myFunction() { var str = document.getElementById("demo").innerHTML; var txt = str.replace(/microsoft/i,"Runoob"); document.getElementById("demo").innerHTML = txt; }
-
-
split 方法
將一個(gè)字符串分割為子字符串喇聊,然后將結(jié)果作為字符串?dāng)?shù)組返回。
stringObj.split([separator[, limit]])說明
split 方法的結(jié)果是一個(gè)字符串?dāng)?shù)組蹦狂,在 stingObj 中每個(gè)出現(xiàn) separator 的位置都要進(jìn)行分解誓篱。separator 不作為任何數(shù)組元素的部分返回。-
實(shí)例
'156118 339\t06'.split(/\s/)
正則匹配實(shí)例
//.號(hào)元字符, 代表除了換行之外的所有單個(gè)字符
var pattern = /g..gle/; //一個(gè)點(diǎn).匹配一個(gè)任意的字符
var str = "goagle";
console.log(pattern.test(str));
//*號(hào)元字符, 配合其他字符使用, 允許其他字符出現(xiàn)任意多次
// 重復(fù)多次匹配, 可以出現(xiàn)任意次,
var pattern = /g.*gle/; //.* 匹配0到多個(gè)字符
var str = "google"
console.log(pattern.test(str));
// [ ] : 表示字符可以出現(xiàn)的范圍
//[a-z]*表示任意0到多個(gè)a-z的字母
var pattern = /g[a-z]*gle/;
var str = "google";
console.log(pattern.test(str));
//非字符: ^
var pattern = /g[^0-9]*gle/; //可以有任意多個(gè)非0-9的字符
var str = "google";
console.log(pattern.test(str));
//+ 表示至少出現(xiàn)1次
//[A-Z]+: 至少出現(xiàn)一個(gè)A-Z的字符
var pattern = /[a-z][A-Z]+/;
var str = "gooGle";
console.log(pattern.test(str));
//使用元符號(hào)匹配
//\w* :匹配任意多個(gè)數(shù)字字母下劃線 , \w : 等價(jià)于[a-zA-Z0-9_]
var pattern = /g\w*gle/;
var str = "gooA3gle";
console.log(pattern.test(str));
//\d 代表數(shù)字, 等價(jià)于 [0-9]
//\d* 表示任意多個(gè)數(shù)字
var pattern = /g\d*gle/;
var str = "g3243gle";
console.log(pattern.test(str));
//\D: 匹配非數(shù)字, 相當(dāng)于[^0-9]
var pattern = /g\Dgle/;
var str = "ga3gle";
console.log(pattern.test(str));
//\D{7,}: 匹配至少7個(gè)非數(shù)字, 相當(dāng)于[^0-9]{7,}
var pattern = /\D{7,}/;
var str = "g3243gle";
console.log(pattern.test(str));
/使用錨元字符
// /^ 匹配開始,從頭開始匹配
// $/ 匹配結(jié)尾,從結(jié)尾開始匹配
var pattern = /^google$/;
var str = "google";
console.log(pattern.test(str));
// \s 匹配空格
var pattern = /goo\sgle/;
var str = "goo gle";
console.log(pattern.test(str));
//m 多行匹配
var str = "first second\nthird fourth\nfifth sixth";
var patt = /\w+$/gm
var patt = /\w+/gm
console.log(str.match(patt));
正則匹配實(shí)例
/*是否帶有小數(shù)*/
function isDecimal(strValue ) {
var objRegExp= /^\d+\.\d+$/;
return objRegExp.test(strValue);
}
/*校驗(yàn)是否中文名稱組成 */
function ischina(str) {
var reg=/^[\u4E00-\u9FA5]{2,4}$/; /*定義驗(yàn)證表達(dá)式*/
return reg.test(str); /*進(jìn)行驗(yàn)證*/
}
/*校驗(yàn)是否全由8位數(shù)字組成 */
function isStudentNo(str) {
var reg=/^[0-9]{8}$/; /*定義驗(yàn)證表達(dá)式*/
return reg.test(str); /*進(jìn)行驗(yàn)證*/
}
/*校驗(yàn)電話碼格式 */
function isTelCode(str) {
var reg= /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
return reg.test(str);
}
/*校驗(yàn)郵件地址是否合法 */
function IsEmail(str) {
var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
return reg.test(str);
}