JavaScript 如何搜索字符串的模式
在本文中,我们将看到如何在JavaScript中搜索字符串的模式。我们将使用以下方法来搜索字符串:
方法 1: 这里,我们将学习如何在JavaScript中搜索包含给定模式的字符串。string.search() 方法是JavaScript中的内置方法,用于此目的。它在给定字符串中搜索正则表达式之间的匹配项。
语法:
let position = str.search( expression )
参数: string.search() 方法接受两个参数:
- String name: 我们要在其上搜索模式的字符串的名称
- Expression: 我们要检查是否存在于上述字符串中的模式/子字符串
返回值: 它返回给定字符串中首次匹配正则表达式的索引值,否则返回-1。它从索引0开始,如果匹配到任何字符,就返回其对应的索引并停止检查。
示例1:
JavaScript
<script>
// Taking input a string.
var string = "GeeksforGeeks is computer science portal";
// Taking a regular expression.
var regexp1 = /G/;
var regexp2 = /c/;
var regexp3 = /z/;
// Output
console.log(string.search(regexp1));
//Expected Output: 0
console.log(string.search(regexp2));
// Expected Output: 17
console.log(string.search(regexp3));
// Expected Output: -1
</script>
输出:
0
17
-1
解释: 我们可以观察到第一个匹配的 ‘G’ 出现在索引 0 处,而 ‘c’ 的第一个匹配出现在第 17 个索引处,而字母 ‘z’ 在字符串 “GeeksforGeeks is computer science portal” 中不存在,因此返回 -1。
示例 2:
JavaScript
<script>
// Taking input a string.
var string = "GeeksforGeeks is computer science portal";
// Taking a regular expression.
var regexp = /cie/;
console.log(string.search(regexp));
// Expected Output: 27
</script>
输出:
27
解释: 我们可以观察到表达式 ‘cie’ 与索引为27的字符串匹配。因此,如果给定字符串中存在与正则表达式的第一个匹配元素相匹配的元素(这里是 ‘cie’ 中的 ‘c’),则返回第一个匹配元素的索引。
方法2: 我们也可以使用Javascript的String match()函数,它返回一个数组,该数组包含在给定的字符串中找到与给定表达式匹配的元素,如果没有找到匹配则返回null。
语法:
string.match( expression )
参数: 这里使用了两个参数:
- String name: 将要搜索模式的字符串的名称作为参数。
- Expression: 我们要检查的模式/子字符串,作为上述字符串中是否存在的参数。
示例1:
JavaScript
<script>
// Taking input a string.
let string = "GeeksforGeeks is computer science portal";
console.log(string.match(/rGe/g));
</script>
输出:
['rGe']
0: "rGe"
length: 1
[[Prototype]]: Array(0)
因此,它返回一个长度为1的数组,因为在给定的表达式和字符串之间只有一个匹配项。使用“g”标志可以找到区分大小写的匹配项。
对于全局、不区分大小写的匹配,我们可以使用“gi”标志,它会返回给定字符串中所有可能的组合。
示例2:
JavaScript
<script>
// Taking input a string.
let string = "GeeksforGeeks is computer "
+ "science portal for computer geeks";
console.log(string.match(/gee/gi));
</script>
输出:
['Gee', 'Gee', 'gee']
0: "Gee"
1: "Gee"
2: "gee"
length: 3
[[Prototype]]: Array(0)
因此,它返回一个长度为三的数组,其中包含给定表达式/模式与字符串之间的所有可能组合。
极客教程