# 正規表現

文字列内で文字の組み合わせを照合するために用いられるパターンである。

## RegExp オブジェクト

RegExp コンストラクターは、パターンに従ったテキストにマッチする正規表現オブジェクトを生成する

```js:example.js

const searchWord = 'hoge'

new RegExp(`${searchWord}`); 
> /hoge/ //部分一致

new RegExp(`^${searchWord}`); 
> /^hoge/ // 前方一致
new RegExp(`${searchWord}$`); 
> /hoge$/ // 後方一致
```

## GROWI で使われる正規表現

[該当のコード](https://github.com/weseek/growi/blob/45fc7e72e0d484961526494f2a248cebeb16c951/src/server/models/user.js)

```js:models/user.js

  userSchema.statics.isEmailValid = function(email, callback) {
    validateCrowi();

    const whitelist = crowi.configManager.getConfig('crowi', 'security:registrationWhiteList');

    if (Array.isArray(whitelist) && whitelist.length > 0) {
      return whitelist.some((allowedEmail) => {
        const re = new RegExp(`${allowedEmail}$`);
        return re.test(email);
      });
    }

    return true;
  };
```

管理画面で設定できる White List を元に、その Email が登録できる Email なのかをチェックしている。  
`@weseek.co.jp` などのドメインで登録をコントロールできるようにするため、後方一致の正規表現を生成している。

## 参考
- [正規表現](https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions)
- [RegExp](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp)


---

## Page Navigation

- Canonical URL: https://tips.weseek.co.jp/用語集/Javascript/正規表現
- Permalink: https://tips.weseek.co.jp/5e633bb4d9ebf700489783ea
- Parent: [Javascript](/5e392e88e848c600487d69db.md)
- Children: 0 total
- Total descendants: 0
- Siblings: 14 total
  - [Angular](/5e393953e848c600487d6a04.md)
  - [ECMAScript](/5e39820de848c600487d6a24.md)
  - [Object_entries ](/5e3f9391f5921400485be6a8.md)
  - [React](/5e3930c8e848c600487d69ed.md)
  - [Setオブジェクト](/5e4252bbdecd0a0049953aea.md)
  - [Svelte](/5e3980bde848c600487d6a1e.md)
  - [Vue](/5e3930f3e848c600487d69f0.md)
  - [protypeMethodのmap()とforEach()の違い](/5e57b3b07887d100480949fe.md)
  - [protypeMethodのthen()について](/5f163aac647aac00495efa7d.md)
  - [throttle-debouceのthrottleとdebouceの違い](/5e785068f78b4b0048b6add1.md)
  - [スプレッド構文](/5e39828be848c600487d6a27.md)
  - [ローカルストレージ](/5e86b4db139099004805819c.md)
  - [分割代入](/5e3af26c25751e0049929801.md)
  - [宣言（varとletとconstの違い）](/5e5de1da3051ce00499cac5e.md)
- Last updated: 2020-03-07T06:17:58.972Z by deleted_at_1672138397219
- Full page listing (all children regardless of count): https://tips.weseek.co.jp/_api/v3/page-listing/children?id=5e633bb4d9ebf700489783ea
