Objekt RegExp JavaScript


Obsah

    Zobrazit obsah


Regulární výraz je posloupnost znaků, která tvoří a vyhledávací vzor.

Vzor vyhledávání lze použít pro textové vyhledávání a nahrazování textu operace.


Co je regulární výraz?

Regulární výraz je posloupnost znaků, která tvoří vhledání vzora.

Když vyhledáváte data v textu, můžete tento vyhledávací vzor použít k popisu toho, co hledáte.

Regulární výraz může být jeden znak nebo složitější vzor.

Regulární výrazy lze použít k provádění všech typů textového vyhledávání a operace nahrazení textu.

Syntax

/pattern/modifiers;

Příklad

/w3schools/i;

Vysvětlený příklad:

/w3schools/i je regulární výraz.

w3schools je vzor (k použití při vyhledávání).

i je modifikátor (upravuje vyhledávání tak, aby se nerozlišovala malá a velká písmena).


Použití řetězcových metod

V JavaScriptu se regulární výrazy často používají se dvěma řetězci metody: search() a replace().

Metoda search() používá výraz k hledání a zápas a vrátí pozici zápasu.

Metoda replace() vrací upravený řetězec, kde je vzor je nahrazen.


Použití řetězce search() s řetězcem

Metoda search() hledá v řetězci zadanou hodnotu a vrací pozici shody:

Příklad

Pomocí řetězce vyhledejte „W3schools“ v řetězci:

let text = "Visit W3Schools!";
let n = text.search("W3Schools");

Výsledek v n bude:

6

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript String Methods</h1>
<p>Search a string for &quot;W3Schools&quot;, and display the position of the match:</p>

<p id="demo"></p>

<script>
let text = "Visit W3Schools!"; 
let n = text.search("W3Schools");
document.getElementById("demo").innerHTML = n;
</script>

</body>
</html>


Použití řetězce search() s regulárním výrazem

Příklad

Použijte regulární výraz k vyhledávání „w3schools“ v řetězci bez ohledu na velikost písmen:

let text = "Visit W3Schools";
let n = text.search(/w3schools/i);

Výsledek v n bude:

6

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Search a string for "w3Schools", and display the position of the match:</p>

<p id="demo"></p>

<script>
let text = "Visit W3Schools!"; 
let n = text.search(/w3Schools/i);
document.getElementById("demo").innerHTML = n;
</script>

</body>
</html>



Použití řetězce nahradit() řetězcem

Metoda replace() nahradí zadanou hodnotu jinou hodnotou v řetězci:

let text = "Visit Microsoft!";
let result = text.replace("Microsoft", "W3Schools");

Zkuste to sami →

<!DOCTYPE html>
<html>

<body>

<h1>JavaScript String Methods</h1>
<p>Replace &quot;Microsoft&quot; with &quot;W3Schools&quot; in the paragraph below:</p>

<button onclick="myFunction()">Try it</button>

<p id="demo">Please visit Microsoft!</p>

<script>
function myFunction() {
  let text = document.getElementById("demo").innerHTML;
  document.getElementById("demo").innerHTML =
  text.replace("Microsoft","W3Schools");
}
</script>

</body>
</html>



Použijte řetězec replace() s regulárním výrazem

Příklad

Použijte regulární výraz bez rozlišení velkých a malých písmen k nahrazení Microsoftu W3Schools v řetězci:

let text = "Visit Microsoft!";
let result = text.replace(/microsoft/i, "W3Schools");

Výsledek v res bude:

Visit W3Schools!

Zkuste to sami →

<!DOCTYPE html>
<html>

<body>

<h2>JavaScript String Methods</h2>

<p>Replace "Microsoft" with "W3Schools" in the paragraph below:</p>

<button onclick="myFunction()">Try it</button>

<p id="demo">Please visit Microsoft!</p>

<script>
function myFunction() {
  let text = document.getElementById("demo").innerHTML;
  document.getElementById("demo").innerHTML =
  text.replace(/microsoft/i, "W3Schools");
}
</script>

</body>
</html>

Všiml sis?

Ve výše uvedených metodách lze použít argumenty regulárních výrazů (místo řetězcových argumentů).
Regulární výrazy mohou učinit vaše vyhledávání mnohem výkonnějším (například nerozlišují malá a velká písmena).


Modifikátory regulárních výrazů

Modifikátory lze použít k provádění globálních vyhledávání bez rozlišení velkých a malých písmen:

Modifikátor:

i

Popis: Provádějte párování bez rozlišení velkých a malých písmen

Zkuste to →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Do a case-insensitive search for "w3schools" in a string:</p>

<p id="demo"></p>

<script>
let text = "Visit W3Schools";
let result = text.match(/w3schools/i);
document.getElementById("demo").innerHTML = result;
</script>

</body>
</html>

Modifikátor:

g

Popis: Proveďte globální zápas (místo zastavování po prvním zápase vyhledejte všechny zápasy)

Zkuste to →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Do a global search for "is" in a string:</p>

<p id="demo"></p>

<script>
let text = "Is this all there is?";
let result = text.match(/is/g);
document.getElementById("demo").innerHTML = result; 
</script>

</body>
</html>

Modifikátor:

m

Popis: Proveďte víceřádkovou shodu

Zkuste to →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Do a multiline search for "is" at the beginning of each line in a string:</p>

<p id="demo"></p>

<script>
let text = "\nIs th\nis it?";
let result = text.match(/^is/m);
document.getElementById("demo").innerHTML = "Result is: " + result;
</script>

</body>
</html>

Vzory regulárních výrazů

Závorky se používají k nalezení řady znaků:

Modifikátor:

[abc]

Popis: Najděte libovolný ze znaků v hranatých závorkách

Zkuste to →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Do a global search for the character "h" in a string:</p>

<p id="demo"></p>

<script>
let text = "Is this all there is?";
let result = text.match(/[h]/g);
document.getElementById("demo").innerHTML = result;
</script>

</body>
</html>

Modifikátor:

[0-9]

Popis: Najděte kteroukoli číslici v hranatých závorkách

Zkuste to →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Do a global search for the numbers 1 to 4 in a string:</p>

<p id="demo"></p>

<script>
let text = "123456789";
let result = text.match(/[1-4]/g);
document.getElementById("demo").innerHTML = result;
</script>

</body>
</html>

Modifikátor:

(x|y)

Popis: Najděte kteroukoli z alternativ oddělených znakem |

Zkuste to →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Do a global search for any of the specified alternatives (red|green):</p>

<p id="demo"></p>

<script>
let text = "re, green, red, green, gren, gr, blue, yellow";
let result = text.match(/(red|green)/g);
document.getElementById("demo").innerHTML = result;
</script>

</body>
</html>

Metaznaky jsou znaky se zvláštním významem:

Modifikátor:

\d

Popis: Najděte číslici

Zkuste to →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Do a global search for digits in a string:</p>

<p id="demo"></p>

<script>
let text = "Give 100%!"; 
let result = text.match(/\d/g);
document.getElementById("demo").innerHTML = result;
</script>

</body>
</html>

Modifikátor:

\s

Popis: Najděte prázdný znak

Zkuste to →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Do a global search for whitespace characters in a string:</p>

<p id="demo"></p>

<script>
let text = "Is this all there is?";
let result = text.match(/\s/g);
document.getElementById("demo").innerHTML = result;
</script>

</body>
</html>

Modifikátor:

\b

Popis: Najděte shodu na začátku slova, jako je tento: \bWORD nebo na konci slova takto: WORD\b

Zkuste to →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Search for the characters "LO" in the <b>beginning</b> of a word in the phrase:</p>
<p>"HELLO, LOOK AT YOU!"</p>

<p>Found in position: <span id="demo"></span></p>

<script>
let text = "HELLO, LOOK AT YOU!"; 
let result = text.search(/\bLO/);
document.getElementById("demo").innerHTML = result;
</script>

</body>
</html>

Zkuste to →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Search for the characters "LO" in the <b>end</b> of a word in the phrase:</p>
<p>"HELLO, LOOK AT YOU!"</p>

<p>Found in position: <span id="demo"></span></p>

<script>
let text = "HELLO, LOOK AT YOU!"; 
let result = text.search(/LO\b/);
document.getElementById("demo").innerHTML = result;
</script>

</body>
</html>

Modifikátor:

\uxxxx

Popis: Najděte znak Unicode určený hexadecimálním číslem xxxx

Zkuste to →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Do a global search for the hexadecimal number 0057 (W) in a string:</p>

<p id="demo"></p>

<script>
let text = "Visit W3Schools. Hello World!"; 
let result = text.match(/\u0057/g);
document.getElementById("demo").innerHTML = result;
</script>

</body>
</html>

Kvantifikátory definují množství:

Modifikátor:

n+

Popis: Odpovídá libovolnému řetězci, který obsahuje alespoň jedno n

Zkuste to →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Do a global search for at least one "o" in a string:</p>

<p id="demo"></p>

<script>
let text = "Hellooo World! Hello W3Schools!"; 
let result = text.match(/o+/g);
document.getElementById("demo").innerHTML = result;
</script>

</body>
</html>

Modifikátor:

n*

Popis: Odpovídá libovolnému řetězci, který obsahuje nula nebo více výskytů n

Zkuste to →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Do a global search for an "l", followed by zero or more "o" characters:</p>

<p id="demo"></p>

<script>
let text = "Hellooo World! Hello W3Schools!"; 
let result = text.match(/lo*/g);
document.getElementById("demo").innerHTML = result;
</script>

</body>
</html>

Modifikátor:

n?

Popis: Odpovídá libovolnému řetězci, který obsahuje nula nebo jeden výskyt n

Zkuste to →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Do a global search for a "1", followed by zero or one "0" characters:</p>

<p id="demo"></p>

<script>
let text = "1, 100 or 1000?";
let result = text.match(/10?/g);
document.getElementById("demo").innerHTML = result;
</script>

</body>
</html>

Použití objektu RegExp

V JavaScriptu je objekt RegExp objekt regulárního výrazu s předdefinované vlastnosti a metody.


Pomocí testu()

Metoda test() je výrazová metoda RegExp.

Vyhledá v řetězci vzor a vrátí hodnotu true nebo false, v závislosti na výsledku.

Následující příklad hledá v řetězci znak "e":

Příklad

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

Protože v řetězci je "e", výstup výše uvedeného kódu bude:

true

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Search for an "e" in the next paragraph:</p>

<p id="p01">The best things in life are free!</p>

<p id="demo"></p>

<script>
let text = document.getElementById("p01").innerHTML;
const pattern = /e/;
document.getElementById("demo").innerHTML = pattern.test(text);
</script>

</body>
</html>

Regulární výraz nemusíte nejprve vkládat do proměnné. Dva řádky výše lze zkrátit na jeden:

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

Použití exec()

Metoda exec() je výrazová metoda RegExp.

Vyhledá řetězec pro zadaný vzor a vrátí nalezený text jako objekt.

Pokud není nalezena žádná shoda, vrátí prázdný objekt (null).

Následující příklad hledá v řetězci znak "e":

Příklad

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

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p id="demo"></p>

<script>
const obj = /e/.exec("The best things in life are free!");
document.getElementById("demo").innerHTML =
"Found " + obj[0] + " in position " + obj.index + " in the text: " + obj.input;
</script>

</body>
</html>

Kompletní reference RegExp

Úplnou referenci najdete v našem Dokončení Reference JavaScript RegExp.

Odkaz obsahuje popisy a příklady všech RegExp vlastnosti a metody.