2020-08-04 15:14:01 +08:00
|
|
|
---
|
|
|
|
id: 5c3dda8b4d8df89bea71600f
|
2020-12-16 00:37:30 -07:00
|
|
|
title: 检查混合字符组
|
2020-08-04 15:14:01 +08:00
|
|
|
challengeType: 1
|
|
|
|
forumTopicId: 301339
|
2021-01-13 03:31:00 +01:00
|
|
|
dashedName: check-for-mixed-grouping-of-characters
|
2020-08-04 15:14:01 +08:00
|
|
|
---
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
# --description--
|
|
|
|
|
|
|
|
有时候我们想使用正则表达式里的括号 `()` 来检查字符组。
|
|
|
|
|
|
|
|
如果想在字符串找到 `Penguin` 或 `Pumpkin`,可以这个正则表达式:`/P(engu|umpk)in/g`。
|
|
|
|
|
|
|
|
然后使用 `test()` 方法检查 test 字符串里面是否包含字符组。
|
2020-08-04 15:14:01 +08:00
|
|
|
|
|
|
|
```js
|
|
|
|
let testStr = "Pumpkin";
|
|
|
|
let testRegex = /P(engu|umpk)in/g;
|
|
|
|
testRegex.test(testStr);
|
|
|
|
// Returns true
|
|
|
|
```
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
# --instructions--
|
|
|
|
|
|
|
|
完善正则表达式,使其以区分大小写的方式检查 `Franklin Roosevelt` 或 `Eleanor Roosevelt` 的名字,并且应该忽略 middle names。
|
|
|
|
|
|
|
|
然后完善代码,使创建的正则检查 `myString`,根据正则是否匹配返回 `true` 或 `false`。
|
2020-08-04 15:14:01 +08:00
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
# --hints--
|
2020-08-04 15:14:01 +08:00
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
正则 `myRegex` 测试 `Franklin D. Roosevelt` 应该返回 `true`。
|
2020-08-04 15:14:01 +08:00
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
```js
|
|
|
|
myRegex.lastIndex = 0;
|
|
|
|
assert(myRegex.test('Franklin D. Roosevelt'));
|
|
|
|
```
|
|
|
|
|
|
|
|
正则 `myRegex` 测试 `Eleanor Roosevelt` 应该返回 `true`。
|
2020-08-04 15:14:01 +08:00
|
|
|
|
|
|
|
```js
|
2020-12-16 00:37:30 -07:00
|
|
|
myRegex.lastIndex = 0;
|
|
|
|
assert(myRegex.test('Eleanor Roosevelt'));
|
2020-08-04 15:14:01 +08:00
|
|
|
```
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
正则 `myRegex` 测试 `Franklin Rosevelt` 应该返回 `false`。
|
2020-08-04 15:14:01 +08:00
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
```js
|
|
|
|
myRegex.lastIndex = 0;
|
|
|
|
assert(!myRegex.test('Franklin Rosevelt'));
|
|
|
|
```
|
2020-08-04 15:14:01 +08:00
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
应该使用 `.test()` 来测试正则。
|
2020-08-04 15:14:01 +08:00
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
```js
|
|
|
|
assert(code.match(/myRegex.test\(\s*myString\s*\)/));
|
|
|
|
```
|
2020-08-04 15:14:01 +08:00
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
result 应该返回 `true`。
|
2020-08-04 15:14:01 +08:00
|
|
|
|
|
|
|
```js
|
2020-12-16 00:37:30 -07:00
|
|
|
assert(result === true);
|
2020-08-04 15:14:01 +08:00
|
|
|
```
|
|
|
|
|
2021-01-13 03:31:00 +01:00
|
|
|
# --seed--
|
|
|
|
|
|
|
|
## --seed-contents--
|
|
|
|
|
|
|
|
```js
|
|
|
|
let myString = "Eleanor Roosevelt";
|
|
|
|
let myRegex = /False/; // Change this line
|
|
|
|
let result = false; // Change this line
|
|
|
|
// After passing the challenge experiment with myString and see how the grouping works
|
|
|
|
```
|
|
|
|
|
2020-12-16 00:37:30 -07:00
|
|
|
# --solutions--
|
|
|
|
|
2021-01-13 03:31:00 +01:00
|
|
|
```js
|
|
|
|
let myString = "Eleanor Roosevelt";
|
|
|
|
let myRegex = /(Franklin|Eleanor).*Roosevelt/;
|
|
|
|
let result = myRegex.test(myString);
|
|
|
|
```
|