Objek RegExp JavaScript

Apakah RegExp?

Ungkapan biasa menerangkan objek corak aksara.

Apabila anda mendapatkan semula beberapa teks, anda boleh menggunakan corak untuk menerangkan perkara yang ingin anda dapatkan semula. RegExp ialah corak ini.

Corak ringkas boleh menjadi satu aksara.

Corak yang lebih kompleks termasuk lebih banyak aksara dan boleh digunakan untuk penghuraian, semakan format, penggantian dan banyak lagi.

Anda boleh menentukan kedudukan carian dalam rentetan, jenis aksara yang hendak dicari, dsb.

JavaScript menyediakan objek RegExp untuk melengkapkan operasi dan fungsi yang berkaitan dengan ungkapan biasa Setiap corak ungkapan biasa sepadan dengan contoh RegExp

<🎜. >

Terdapat dua cara untuk mencipta tika objek RegExp.

Gunakan pembina eksplisit RegExp, sintaksnya ialah:
RegExp baharu("pattern"[,"flags"]). Gunakan pembina tersirat RegExp, dalam format teks biasa:
/pattern/[flags]. Bahagian corak

ialah teks corak ungkapan biasa yang akan digunakan, yang diperlukan. Dalam kaedah pertama, bahagian corak wujud dalam bentuk rentetan JavaScript dan perlu disertakan dalam petikan berganda atau petikan tunggal dalam kaedah kedua, bahagian corak bersarang di antara dua "/" dan tanda petikan tidak boleh digunakan. . Bahagian


bendera menetapkan maklumat bendera bagi ungkapan biasa, yang merupakan pilihan. Jika bahagian bendera ditetapkan, dengan cara pertama, ia wujud dalam bentuk rentetan dalam cara kedua, ia adalah dalam bentuk teks sejurus selepas aksara "/" terakhir. bendera boleh menjadi gabungan aksara bendera berikut.
g ialah bendera global. Jika bendera ini ditetapkan, operasi carian dan ganti pada teks akan menjejaskan semua bahagian teks yang sepadan. Jika bendera ini tidak ditetapkan, hanya padanan terawal dicari dan diganti.

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>php中文网(php.cn)</title> 
<script type="text/javascript">
var myString="这是第一个正则表达式的例子"; 
var myregex = new RegExp("一个"); // 创建正则表达式 
if (myregex.test(myString)){ 
document.write("找到了指定的模式!"); 
} 
else{ 
document.write("未找到指定的模式。"); 
} 
</script>
</head>
<body>
</body>
</html>

Pengubah suai RegExp

g ialah bendera global. Jika bendera ini ditetapkan, operasi carian dan ganti pada teks akan menjejaskan semua bahagian teks yang sepadan. Jika bendera ini tidak ditetapkan, hanya padanan terawal dicari dan diganti.
i ialah bendera mengabaikan kes. Jika bendera ini ditetapkan, kes akan diabaikan semasa melakukan perbandingan padanan.
m ialah tanda berbilang baris. Jika bendera ini tidak ditetapkan, metacharacter "^" hanya akan sepadan dengan permulaan keseluruhan rentetan yang dicari dan metacharacter "$" hanya akan sepadan dengan penghujung rentetan yang dicari. Jika bendera ini ditetapkan, "^" juga boleh memadankan kedudukan selepas "n" atau "r" dalam rentetan yang dicari (iaitu, permulaan baris seterusnya) dan "$" juga boleh memadankan rentetan yang dicari Padan dengan kedudukan selepas "n" atau "r" dalam (iaitu, penghujung baris seterusnya).

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<script>
var str="Is this all there is?";
var patt1=/is/gi;
document.write(str.match(patt1));
</script>
</body>
</html>


Sifat objek RegExp

Sifat objek RegExp dibahagikan kepada sifat statik dan contoh harta benda.

1 atribut statik
(1) atribut indeks. Ia ialah kedudukan permulaan kandungan padanan pertama bagi corak ungkapan semasa, dikira dari 0. Nilai awalnya ialah -1, dan atribut indeks akan berubah setiap kali terdapat padanan yang berjaya.
(2) atribut input. Mengembalikan rentetan semasa yang bertindak, yang boleh disingkatkan sebagai $_, dan nilai awal ialah rentetan kosong "".
(3) atribut lastIndex. Ia adalah kedudukan seterusnya bagi aksara terakhir dalam kandungan yang pertama kali dipadankan dengan corak ungkapan semasa bermula dari 0. Ia sering digunakan sebagai kedudukan permulaan apabila meneruskan carian ialah -1, yang bermaksud bahawa carian bermula dari kedudukan permulaan Setiap kali ia berjaya Apabila dipadankan, nilai atribut lastIndex akan berubah dengan sewajarnya.
(4) atribut lastMatch. Merupakan rentetan padanan terakhir corak ungkapan semasa, yang boleh disingkatkan sebagai $&. Nilai awalnya ialah rentetan kosong "". Nilai atribut lastMatch berubah dengan setiap padanan yang berjaya.
(5) atribut lastParen. Jika terdapat subpadanan tertutup dalam corak ungkapan, ia adalah subrentetan yang dipadankan dengan subpadanan terakhir dalam corak ungkapan semasa, yang boleh disingkatkan sebagai $+. Nilai awalnya ialah rentetan kosong "". Nilai atribut lastParen berubah dengan setiap padanan yang berjaya.
(6) atribut leftContext. Ia adalah segala-galanya di sebelah kiri rentetan padanan terakhir dalam corak ungkapan semasa, yang boleh disingkatkan sebagai $` (dengan "'" ialah tanda petikan tunggal belakang di bawah "Esc" pada papan kekunci). Nilai awal ialah rentetan kosong "". Setiap kali terdapat perlawanan yang berjaya, nilai hartanya berubah.
(7) atribut rightContext. Ia adalah segala-galanya di sebelah kanan rentetan padanan terakhir dalam corak ungkapan semasa, yang boleh disingkatkan sebagai $'. Nilai awal ialah rentetan kosong "". Setiap kali terdapat perlawanan yang berjaya, nilai hartanya berubah.
(8) $1…$9 atribut. Sifat ini adalah baca sahaja. Jika terdapat padanan kecil dalam corak ungkapan, nilai atribut $1...$9 ialah kandungan yang ditangkap oleh subpadanan pertama hingga kesembilan masing-masing. Jika terdapat lebih daripada 9 subpadanan, atribut $1...$9 masing-masing sepadan dengan 9 subpadanan terakhir. Dalam corak ungkapan, anda boleh menentukan sebarang bilangan subpadanan dalam kurungan, tetapi objek RegExp hanya boleh menyimpan keputusan sembilan subpadanan terakhir. Dalam tatasusunan hasil yang dikembalikan oleh beberapa kaedah objek contoh RegExp, semua hasil subpadanan dalam kurungan boleh diperolehi.

2 atribut contoh
(1) atribut global. Mengembalikan status bendera global (g) yang ditentukan semasa membuat contoh objek RegExp. Jika bendera g ditetapkan semasa membuat contoh objek RegExp, sifat ini mengembalikan True, jika tidak ia mengembalikan False Nilai lalai ialah False.
(2)ignoreCase atribut. Mengembalikan status bendera ignoreCase (i) yang ditentukan semasa membuat contoh objek RegExp. Jika bendera i ditetapkan semasa membuat contoh objek RegExp, sifat ini mengembalikan True, jika tidak ia mengembalikan False Nilai lalai ialah False.
(3) atribut berbilang Baris. Mengembalikan status bendera berbilangBaris (m) yang ditentukan semasa membuat contoh objek RegExp. Jika bendera m ditetapkan semasa membuat contoh objek RegExp, sifat ini mengembalikan True, jika tidak ia mengembalikan False Nilai lalai adalah False.
(4) atribut sumber. Mengembalikan rentetan teks ungkapan yang ditentukan semasa membuat contoh objek RegExp.


Kaedah objek RegExp

1 kaedah ujian
Format sintaks ialah test(str). Kaedah ini menyemak sama ada corak ungkapan yang ditentukan semasa membuat contoh objek RegExp wujud dalam rentetan dan mengembalikan Benar jika wujud, jika tidak ia mengembalikan Salah. Jika padanan ditemui, sifat statik yang berkaitan dalam objek RegExp dikemas kini untuk mencerminkan padanan.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<script>
var str = 'php';
var patt1 = new RegExp('\w', 'g'); // 有转义作为正则表达式处理
var patt2 = new RegExp('\w', 'g');  // 无转义作为字符串处理
var patt3 =/\w+/g;  // 与 patt1 效果相同
document.write(patt1.test(str)) //输出 true
document.write("<br>") 
document.write(patt2.test(str)) //输出 false
document.write("<br>") 
document.write(patt3.test(str)) //输出 true
</script>
</body>
</html>

2 kaedah exec
Format sintaks ialah exec(str). Kaedah ini mencari rentetan menggunakan corak ungkapan yang ditentukan semasa mencipta contoh objek RegExp dan mengembalikan tatasusunan yang mengandungi hasil carian.
Jika bendera global (g) ditetapkan untuk ungkapan biasa, anda boleh melakukan carian berterusan dalam rentetan dengan memanggil exec dan kaedah ujian beberapa kali, setiap kali memulakan carian untuk aksara dari kedudukan yang ditentukan oleh lastIndex nilai atribut rentetan objek RegExp.
Jika bendera global (g) tidak ditetapkan, kaedah exec dan ujian mengabaikan nilai atribut lastIndex objek RegExp dan mula mencari dari permulaan rentetan.
Jika kaedah exec tidak menemui padanan, nilai pulangan adalah batal; jika padanan ditemui, tatasusunan dikembalikan dan sifat statik yang berkaitan dalam objek RegExp dikemas kini untuk mencerminkan padanan. Elemen 0 dalam tatasusunan yang dikembalikan mengandungi hasil padanan lengkap, manakala elemen 1 hingga n ialah hasil setiap subpadanan yang ditakrifkan dalam corak ungkapan.
Tatasusunan yang dikembalikan oleh kaedah exec mempunyai tiga atribut, iaitu input, indeks dan lastIndex.
Atribut input ialah keseluruhan rentetan yang dicari.
Atribut indeks merujuk kepada kedudukan padanan dalam keseluruhan rentetan yang dicari.
Atribut lastIndex merujuk kepada kedudukan aksara di sebelah aksara terakhir subrentetan yang dipadankan.

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>php中文网(php.cn)</title> 
<script type="text/javascript">
var myString="aaa 111 bbb 222 ccc 1111 222ddd"; 
var regex = /111/; //创建正则表达式对象 
var array=regex.exec(myString); 
if (array){ 
var str="找到了匹配子串!"+"\n返回数组的值为:"+array+"\n数组元素个数:" 
+array.length+"\n被搜索的字符串为:"+array.input 
+"\n匹配子串的开始位置为:"+array.index 
+"\n匹配子串后面第一个字符的位置为:"+regex.lastIndex; 
alert(str); 
} 
else{ 
alert("未找到匹配子串!!"); 
} 
</script>
</head>
<body>
</body>
</html>


Meneruskan pembelajaran
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script type="text/javascript"> var strSrc = "xxa1b01c001yya2b02c002zz"; var re = /a(\d)b(\d{2})c(\d{3})/gi; var arr, count = 0; while ((arr = re.exec(strSrc))!= null) { displayResult(); } function displayResult() { document.write("<p>这是用正则表达式/" + re.source + "/gi对字符串<br>" + RegExp.input + "进行第" + (++count) + "次搜索的结果:<br>"); document.write("RegExp.index为" + RegExp.index + "<br>"); document.write("RegExp.lastIndex为" + RegExp.lastIndex + "<br>"); document.write("RegExp.lastMatch为" + RegExp.lastMatch + "<br>"); document.write("RegExp.lastParen为" + RegExp.lastParen + "<br>"); document.write("RegExp.leftContext为" + RegExp.leftContext + "<br>"); document.write("RegExp.rightContext为" + RegExp.rightContext + "<br>"); document.write("RegExp.$1为" + RegExp.$1 + "<br>"); document.write("RegExp.$2为" + RegExp.$2 + "<br>"); document.write("RegExp.$3为" + RegExp.$3 + "<br>"); document.write("RegExp.$4为" + RegExp.$4 + "<br>"); document.write("arr.index为" + arr.index + "<br>"); document.write("arr.input为" + arr.input + "<br>"); document.write("arr.lastIndex为" + arr.lastIndex + "<br>"); document.write("返回数组的元素个数为" + arr.length + "<br>"); document.write("返回数组的内容为[]"); for(var i=0; i<arr.length; i++) { if(i < arr.length-1) document.write("" + arr[i] + ""); else document.write(("" + arr[i] + "")+"<p>"); } } </script> </head> <body> </body> </html>
  • Cadangan kursus
  • Muat turun perisian kursus