From 35529e798808816cdd868100f9fbc20c69580848 Mon Sep 17 00:00:00 2001 From: JasonLamv-t Date: Tue, 8 Aug 2023 16:25:00 +0800 Subject: [PATCH 1/5] [zh-cn]: Update translation of String.search() --- .../global_objects/string/search/index.md | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md index 8816103eed31f3..2ace8e8ea34a87 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md @@ -5,41 +5,51 @@ slug: Web/JavaScript/Reference/Global_Objects/String/search {{JSRef}} -**`search()`** 方法执行正则表达式和 {{jsxref("String")}} 对象之间的一个搜索匹配。 +**`search()`** 方法用于在 {{jsxref("String")}} 对象中执行正则表达式的搜索,寻找匹配项。 {{EmbedInteractiveExample("pages/js/string-search.html")}} ## 语法 -```plain -str.search(regexp) +```js-nolint +search(regexp) ``` ### 参数 - `regexp` - - : 一个{{jsxref("RegExp", "正则表达式(regular expression)")}}对象。如果传入一个非正则表达式对象 `regexp`,则会使用 `new RegExp(regexp)` 隐式地将其转换为正则表达式对象。 + + - : 一个正则表达式对象,或者具有 [`Symbol.search`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/search) 方法的任意对象。 + + 如果 `regexp` 不是 `RegExp` 对象,并且没有 `Symbol.search` 方法,则会通过使用 `new RegExp(regexp)` 进行隐式转换为 {{jsxref("RegExp")}}。 ### 返回值 -如果匹配成功,则 `search()` 返回正则表达式在字符串中首次匹配项的索引;否则,返回 `-1`。 +如果匹配成功,则 `search()` 返回正则表达式在字符串中首次匹配项的索引;否则,返回 `-1`。 ## 描述 -当你想要知道字符串中是否存在某个模式(pattern)时可使用 `search()`,类似于正则表达式的 {{jsxref("RegExp.test", "test()")}} 方法。当要了解更多匹配信息时,可使用 {{jsxref("String.match", "match()")}}(但会更慢一些),该方法类似于正则表达式的 {{jsxref("RegExp.exec", "exec()")}} 方法。 +`String.prototype.search()` 方法的实现非常简单——它只是使用字符串作为第一个参数来调用传入的正则表达式的 `Symbol.search` 方法。实际的实现来自于 [`RegExp.prototype[@@search]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@search)。 + +`regexp` 的 `g` 标志对 `search()` 方法的结果没有影响,搜索总是以正则表达式的 `lastIndex` 为 0 进行。有关 `search()` 方法行为的更多信息,请参阅 [`RegExp.prototype[@@search]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@search)。 + +当你想知道字符串中是否存在某个模式,并且还想知道它在字符串中的索引时,可以使用 `search()` 方法。 + +- 如果你只想知道某个模式是否存在,请使用 {{jsxref("RegExp.prototype.test()")}} 方法,它返回一个布尔值。 +- 如果你需要获取匹配文本的内容,请使用 {{jsxref("String.prototype.match()", "match()")}} 或 {{jsxref("RegExp.prototype.exec()")}}。 ## 示例 -### 示例:使用 `search()` +### 使用 search() -下面的例子中用两个不同的正则表达式对同一个字符串执行搜索匹配,得到一个成功匹配(正数返回值)和一个失败匹配(-1)。 +下面的例子中用两个不同的正则表达式对同一个字符串执行搜索匹配,得到一个成功匹配(正数返回值)和一个失败匹配(`-1`)。 ```js -var str = "hey JudE"; -var re = /[A-Z]/g; -var re2 = /[.]/g; +const str = "hey JudE"; +const re = /[A-Z]/; +const reDot = /[.]/; console.log(str.search(re)); // returns 4, which is the index of the first capital letter "J" -console.log(str.search(re2)); // returns -1 cannot find '.' dot punctuation +console.log(str.search(reDot)); // returns -1 cannot find '.' dot punctuation ``` ## 规范 @@ -52,6 +62,8 @@ console.log(str.search(re2)); // returns -1 cannot find '.' dot punctuation ## 参见 +- [`core-js` 中 `String.prototype.search` 的 polyfill,修复并实现了 `Symbol.search` 支持等现代行为](https://github.com/zloirock/core-js#ecmascript-string-and-regexp) - [在 JavaScript 中使用正则表达式](/zh-CN/docs/Web/JavaScript/Guide/Regular_expressions) - {{jsxref("String.prototype.match()")}} - {{jsxref("RegExp.prototype.exec()")}} +- [`RegExp.prototype[@@search]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@search) From 060092c8d1cecbec1d498e45f616ad77dbba0b0b Mon Sep 17 00:00:00 2001 From: Jason Lam Date: Wed, 9 Aug 2023 08:36:40 +0800 Subject: [PATCH 2/5] Apply suggestions from code review Co-authored-by: Jason Ren <40999116+jasonren0403@users.noreply.github.com> Co-authored-by: A1lo --- .../reference/global_objects/string/search/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md index 2ace8e8ea34a87..58cc37cebbc258 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md @@ -21,11 +21,11 @@ search(regexp) - : 一个正则表达式对象,或者具有 [`Symbol.search`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Symbol/search) 方法的任意对象。 - 如果 `regexp` 不是 `RegExp` 对象,并且没有 `Symbol.search` 方法,则会通过使用 `new RegExp(regexp)` 进行隐式转换为 {{jsxref("RegExp")}}。 + 如果 `regexp` 不是 `RegExp` 对象,并且不具有 `Symbol.search` 方法,则会使用 `new RegExp(regexp)` 将其隐式转换为 {{jsxref("RegExp")}}。 ### 返回值 -如果匹配成功,则 `search()` 返回正则表达式在字符串中首次匹配项的索引;否则,返回 `-1`。 +如果匹配成功,则返回正则表达式在字符串中首次匹配的索引;否则,返回 `-1`。 ## 描述 @@ -33,7 +33,7 @@ search(regexp) `regexp` 的 `g` 标志对 `search()` 方法的结果没有影响,搜索总是以正则表达式的 `lastIndex` 为 0 进行。有关 `search()` 方法行为的更多信息,请参阅 [`RegExp.prototype[@@search]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@search)。 -当你想知道字符串中是否存在某个模式,并且还想知道它在字符串中的索引时,可以使用 `search()` 方法。 +当你想知道字符串中是否存在某个模式,并且*还*想知道它在字符串中的索引时,可以使用 `search()` 方法。 - 如果你只想知道某个模式是否存在,请使用 {{jsxref("RegExp.prototype.test()")}} 方法,它返回一个布尔值。 - 如果你需要获取匹配文本的内容,请使用 {{jsxref("String.prototype.match()", "match()")}} 或 {{jsxref("RegExp.prototype.exec()")}}。 @@ -42,7 +42,7 @@ search(regexp) ### 使用 search() -下面的例子中用两个不同的正则表达式对同一个字符串执行搜索匹配,得到一个成功匹配(正数返回值)和一个失败匹配(`-1`)。 +下面的示例中用两个不同的正则表达式对同一个字符串执行搜索匹配,得到一个成功匹配(正数返回值)和一个失败匹配(`-1`)。 ```js const str = "hey JudE"; From 1cc95ba0a755aa01313bf3ac2f6353aa3268d3ba Mon Sep 17 00:00:00 2001 From: Jason Lam Date: Wed, 9 Aug 2023 08:37:25 +0800 Subject: [PATCH 3/5] Apply suggestions from code review --- .../javascript/reference/global_objects/string/search/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md index 58cc37cebbc258..9e32f5e6f71f24 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md @@ -48,7 +48,7 @@ search(regexp) const str = "hey JudE"; const re = /[A-Z]/; const reDot = /[.]/; -console.log(str.search(re)); // returns 4, which is the index of the first capital letter "J" +console.log(str.search(re)); // 返回 4,这是第一个大写字母“J”的索引 console.log(str.search(reDot)); // returns -1 cannot find '.' dot punctuation ``` From 125976fbbeaf038367bc71005dffc604bfb1b2da Mon Sep 17 00:00:00 2001 From: Jason Lam Date: Wed, 9 Aug 2023 08:38:33 +0800 Subject: [PATCH 4/5] Apply suggestions from code review --- .../javascript/reference/global_objects/string/search/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md index 9e32f5e6f71f24..32d20d4a0ec556 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md @@ -49,7 +49,7 @@ const str = "hey JudE"; const re = /[A-Z]/; const reDot = /[.]/; console.log(str.search(re)); // 返回 4,这是第一个大写字母“J”的索引 -console.log(str.search(reDot)); // returns -1 cannot find '.' dot punctuation +console.log(str.search(reDot)); // 返回 -1,找不到“.”点符号 ``` ## 规范 From 347295519b3166e62621b137aac245b509ec048d Mon Sep 17 00:00:00 2001 From: Jason Ren <40999116+jasonren0403@users.noreply.github.com> Date: Thu, 10 Aug 2023 22:41:34 +0800 Subject: [PATCH 5/5] fix --- .../reference/global_objects/string/search/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md b/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md index 32d20d4a0ec556..375db54ea5ff6a 100644 --- a/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md +++ b/files/zh-cn/web/javascript/reference/global_objects/string/search/index.md @@ -29,7 +29,7 @@ search(regexp) ## 描述 -`String.prototype.search()` 方法的实现非常简单——它只是使用字符串作为第一个参数来调用传入的正则表达式的 `Symbol.search` 方法。实际的实现来自于 [`RegExp.prototype[@@search]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@search)。 +`String.prototype.search()` 方法的实现非常简单——它只是将该字符串作为调用实参拥有的 `Symbol.search` 方法的第一个参数。实际的实现来自于 [`RegExp.prototype[@@search]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@search)。 `regexp` 的 `g` 标志对 `search()` 方法的结果没有影响,搜索总是以正则表达式的 `lastIndex` 为 0 进行。有关 `search()` 方法行为的更多信息,请参阅 [`RegExp.prototype[@@search]()`](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp/@@search)。 @@ -49,7 +49,7 @@ const str = "hey JudE"; const re = /[A-Z]/; const reDot = /[.]/; console.log(str.search(re)); // 返回 4,这是第一个大写字母“J”的索引 -console.log(str.search(reDot)); // 返回 -1,找不到“.”点符号 +console.log(str.search(reDot)); // 返回 -1,找不到点符号“.” ``` ## 规范