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.
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.
/pattern/modifiers;
/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).
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.
search()
s řetězcemMetoda search()
hledá v řetězci zadanou hodnotu a vrací pozici shody:
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 "W3Schools", 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>
search()
s regulárním výrazemPouž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>
nahradit()
řetězcemMetoda 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 "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","W3Schools");
}
</script>
</body>
</html>
replace()
s regulárním výrazemPouž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>
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 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>
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>
V JavaScriptu je objekt RegExp objekt regulárního výrazu s předdefinované vlastnosti a metody.
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":
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!");
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":
/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>
Úplnou referenci najdete v našem Dokončení Reference JavaScript RegExp.
Odkaz obsahuje popisy a příklady všech RegExp vlastnosti a metody.