Rumah > hujung hadapan web > tutorial js > Pengenalan kepada asas kemahiran javascript regular expressions_javascript

Pengenalan kepada asas kemahiran javascript regular expressions_javascript

WBOY
Lepaskan: 2016-05-16 16:03:01
asal
1354 orang telah melayarinya

Apakah faedah ungkapan biasa Mari kita fahami dahulu:
Kami menggunakan kaedah memproses rentetan dalam js untuk menulis fungsi untuk mengekstrak nombor dalam rentetan:

 var str='dgh6a567sdo23ujaloo932';
   function getNumber(obj){
     var arr=[];
     for (var i = 0; i < obj.length; i++) {
       if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
           arr.push(obj.charAt(i));
         }
     }
     return arr;
   };
   console.log(getNumber(str));  //["6", "5", "6", "7", "2", "3", "9", "3", "2"]
Salin selepas log masuk

Kami mengeluarkan nombor dalam rentetan dengan kaedah di atas, tetapi kami tidak berpuas hati dengan bentuk ['6','567','23','932'], dan mengubah fungsi. :

function getNumber(obj){
    var arr=[];
    var temp='';
    for (var i = 0; i < obj.length; i++) {
      if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
          temp+=obj.charAt(i);//现将相邻的数字连接起来
        }
        else{ //每当连接的数字断开时,就在这执行
          if (temp) {
            arr.push(temp);
            temp='';
          }
        };
    }
    if (temp) { //这里的作用是为了显示最后数字的,原因不想解释
            arr.push(temp);
            temp='';
          }
    return arr;
  };
Salin selepas log masuk

Kemudian kami menggunakan ungkapan biasa untuk menyelesaikan fungsi yang dilaksanakan oleh fungsi ini:

function getNumber2(obj){
    var arr=[];
    var re=/\d+/g;
    arr.push(obj.match(re));
    return arr;
  };
Salin selepas log masuk

Mari kita lihat sepenuhnya keputusan program yang dijalankan:

<!DOCTYPE>
<html>
<head>
  <meta charset='utf-8'>
  <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
  var str='dgh6a567sdo23ujaloo932';
  /*function getNumber(obj){
    var arr=[];
    for (var i = 0; i < obj.length; i++) {
      if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
          arr.push(obj.charAt(i));
        }
    }
    return arr;
  };*/
  function getNumber(obj){
    var arr=[];
    var temp='';
    for (var i = 0; i < obj.length; i++) {
      if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
          temp+=obj.charAt(i);//现将相邻的数字连接起来
        }
        else{ //每当连接的数字断开时,就在这执行
          if (temp) {
            arr.push(temp);
            temp='';
          }
        };
    }
    if (temp) { //这里的作用是为了显示最后数字的,原因不想解释
            arr.push(temp);
            temp='';
          }
    return arr;
  };
  function getNumber2(obj){
    var arr=[];
    var re=/\d+/g;
    arr.push(obj.match(re));
    return arr;
  };
  console.log(getNumber(str));
  console.log(getNumber2(str)); 
};
</script>
<body>
</body>
</html>
Salin selepas log masuk

Kita boleh lihat daripada contoh di atas bahawa kaedah ungkapan biasa mempunyai kesan yang sama, tetapi kodnya lebih pendek dan lebih cekap Ini adalah faedah ungkapan biasa
Ungkapan biasa dicipta untuk memproses rentetan dengan lebih cekap Ia adalah sama seperti kaedah pemprosesan rentetan, tetapi lebih cekap dan ringkas (ungkapan biasa hanya boleh memproses rentetan)

Mari kita kaji secara sistematik beberapa kaedah biasa penyelarasan:

Sebelum ini, mari kita bincangkan tentang cara menulis ungkapan biasa adalah sama dengan tatasusunan objek lain(), objek(), Tarikh(), dsb., dan semuanya mempunyai kaedah permulaan
var re=/Anda perlu menulis perkara yang sepadan di sini. Jika anda tidak menulisnya, anda hanya akan menumpukan pada simbol/ //Ini adalah ciptaan mudah objek biasa saya akan menggunakannya secara langsung dalam artikel berikut
var re=new RegExp(); //Cara penciptaan ini juga mungkin, semua orang tahu, tetapi perbezaan dari singkatan adalah bahawa lulus parameter adalah sedikit berbeza

(1)ujian

Maksud: Padankan rentetan secara kerap, kembalikan benar apabila perlawanan berjaya, jika tidak, pulangkan palsu; Sintaks: re.test(string);
Mari bercakap tentang watak melarikan diri dahulu:
/s space /S bukan ruang /d nombor /D bukan nombor /w aksara (huruf, nombor, garis bawah) /W bukan aksara
Contohnya: Tentukan sama ada rentetan ialah semua nombor

<!DOCTYPE>
<html>
<head>
  <meta charset='utf-8'> 
  <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
  var str='dgh6a567sdo23ujaloo932';
  var str2='123456';
  function allNumber(obj){
    var re=/\D/;//定义正则对象匹配非数字,只要有不是数字的就是匹配结束返回结果
    if (re.test(obj)) {
      alert('不全是数字');
    }
    else{
      alert('全是数字');
    };
  };
  allNumber(str);
  allNumber(str2);

};
</script>
<body>
</body>
</html>

Salin selepas log masuk

(2) carian

Maksud: Memadankan rentetan secara kerap Apabila perlawanan berjaya, kedudukan perlawanan yang berjaya dikembalikan jika tidak, -1 dikembalikan fungsi yang sama seperti indexof() dalam kaedah pemprosesan rentetan Sintaks: string.search(re);

[color=Red]Nota: Ungkapan biasa adalah sensitif huruf besar-kecil secara lalai Untuk menjadikannya tidak sensitif huruf besar-besaran, tambahkan bendera i;[/color]
Contoh, padanan biasa tidak peka huruf besar-kecil bagi aksara tertentu
dalam rentetan

<!DOCTYPE>
<html>
<head>
  <meta charset='utf-8'> 
  <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
  var str='dgh6b567sdo23ujaloo932';
  function searchStr(obj){
    var re=/B/i;//定义正则对象匹配b字符,不区分大小写
    alert(obj.search(re));  
  };
  searchStr(str);
};
</script>
<body>
</body>
</html>
Salin selepas log masuk
(3) perlawanan


Maksud: Memadankan rentetan secara kerap Apabila perlawanan berjaya, susunan perlawanan yang berjaya akan dikembalikan. Sintaks: string.match(re);

[color=Red] Nota: Lalai dalam ungkapan biasa ialah selagi perlawanan berjaya, ia akan tamat serta-merta dan mengembalikan nilai yang sepadan, dan perlawanan tidak akan diteruskan. Jika anda ingin mencari kesemuanya, anda perlu menambah g (padanan global) [/color]

Contoh: Padankan nombor berturut-turut dalam rentetan dan simpannya dalam tatasusunan (nombor berturut-turut digunakan sebagai item dalam tatasusunan)

" " dalam program bermakna perlawanan berlaku sekurang-kurangnya sekali. Mengapa kita melakukan ini?
Kami menyebut sebelum ini bahawa "lalai dalam ungkapan biasa ialah selagi perlawanan itu berjaya, ia akan tamat serta-merta dan mengembalikan nilai yang sepadan kemudiannya akan tamat apabila nombor dipadankan dalam rentetan, dan nombor akan dikembalikan." kepada tatasusunan Pada masa ini, apa yang kita perlukan ialah menggunakan g untuk menjadikannya sepadan dengan setiap elemen.

Pernahkah anda mendapati bahawa tiada bilangan nombor berturut-turut yang pasti Anda boleh menggunakan " " untuk memenuhi bilangan nombor dinamik.




<!DOCTYPE>
<html>
<head>
  <meta charset='utf-8'> 
  <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
  var str='dgh6b567sdo23ujaloo932';
  function searchStr1(obj){
    var re=/\d/;  
    return obj.match(re);
  };
  function searchStr2(obj){
    var re=/\d/g;  
    return obj.match(re);
  };
  function searchStr3(obj){
    var re=/\d\d/g;//全局匹配2位数  
    return obj.match(re);
  };
  function searchStr4(obj){
    var re=/\d+/g;  
    return obj.match(re);
  };
  console.log(searchStr1(str));
  console.log(searchStr2(str));
  console.log(searchStr3(str));
  console.log(searchStr4(str));

};
</script>
<body>
</body>
</html>

Salin selepas log masuk
(4)ganti

Maksud: Padankan rentetan secara kerap dan apabila rentetan yang berjaya dipadankan digantikan dengan rentetan baharu
Sintaks: string.replace(re);

Contoh: Gantikan semua a dalam rentetan dengan b




Saya akan menulis di sini buat sementara waktu dan membuat susulan dengan kemas kini. . .
<!DOCTYPE>
<html>
<head>
 <meta charset='utf-8'> 
 <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
 var str='daah6b5a7sdo23ujaloo932';
 function replaceStr(obj){
  var re=/a/g; //全局匹配a
  return obj.replace(re,'b');
 };
 console.log(replaceStr(str));
};
</script>
<body>
</body>
</html>
Salin selepas log masuk
Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan