정규식에 특정 문자가 포함되어 있는지 확인 [javascript]

정규 표현의 사용법이나 할 수 있는 것을 몇번이나 잊어 버리기 때문에 하는 방법을 정리.

하고 싶은 일
- 조건 (정규 표현)에 맞는 문 일치하는 문자열을 검색하고 문자열이 조건과 일치하는지 확인 .test()
- 조건 (정규 표현)에 맞는 문 일치하는 문자열을 검색하고 문자열을 대체 .replace()

정규식



기초는 사이트에서 공부할 필요가 있기 때문에,
기본적으로는 문자열의 패턴을 「/」로 둘러싸는 것 같은 쓰는 방법을 합니다.
/(文字列のパターン)/
자신은 정규 표현 체커 사이트등에서 실제의 데이터와 비교하면서 정규 표현을 작성하고 있습니다.
htps : // 루부 r. 코m/
심플 & 아래에 치트 시트가 있기 때문에 체크하면서 정규 표현을 작성할 수 있습니다.


정규 표현 플래그(수식자)



정규 표현 플래그에 대한 이해가 애매했기 때문에 플래그에 대해서도 정리해 둡니다. 정규식에는 전역 검색과 대소문자를 구분하지 않는 검색을 가능하게 하는 4가지 옵션 플래그가 있습니다.

플래그를 정규식에 포함하려면 다음을 수행합니다.const re = /pattern/flags;

한정자
내용


g
반복 일치(global)

i
대문자와 소문자를 구분하지 않음 (case-insensitive)

m
문자열을 여러 줄로 처리 (multi-line)


문자열이 조건과 일치하는지 확인하기 정규식 + .test()



예) 입력 된 문자의 끝에 '.jpg'가 포함되어 있습니까?

(2019/9/16 코멘트 반영으로 수정)
  // テスト用正規表現
  const regExp = /.*\.jpg$/

  // 入力された値の最後に「'.jpg'」が含まれているかをtestする
  const answer = regExp.test(data);

전체 텍스트 표시하면 아래와 같은 이미지
<!DOCTYPE html>
<html lang="ja">
<head><meta charset="UTF-8"></head>
<body>
  <input type="text" class="js-data" value="test.jpg">
</body>
<script>
  // inputに入力された値の取得
  const data = document.querySelector('.js-data').value;
  // テスト用正規表現
  const regExp = /.*\.jpg$/

  // 入力された値の最後に「'.jpg'」が含まれているかをtestする
  const answer = regExp.test(data);

  // コンソール出力 => true
  console.log(answer);
</script>
</html>


예) 입력된 문자가 「숫자/숫자/숫자」의 형태를 취하고 있는가

*「\d」는 0~9의 숫자의 뜻과 동등
  // テスト用正規表現
  const regExp = /\d*\/\d*\/d*/g

  // 入力された値の最後に「'.jpg'」が含まれているかをtestする
  const answer = regExp.test(data);


전체 텍스트 표시하면 아래와 같은 이미지

<!DOCTYPE html>
<html lang="ja">
<head><meta charset="UTF-8"></head>
<body>
  <input type="text" class="js-data" value="2019/09/15">
</body>
<script>
  // inputに入力された値の取得
  const data = document.querySelector('.js-data').value;
  // テスト用正規表現
  const regExp = /\d*\/\d*\/d*/g

  // 入力された値の最後に「'.jpg'」が含まれているかをtestする
  const answer = regExp.test(data);

  // コンソール出力 => true
  console.log(answer);
</script>
</html>

정규식에 맞는 문자열 바꾸기 정규식 + .replace()



예) 슬래시 (/)로 구분 된 날짜 데이터의 슬래시 제거 (= 빈 문자 ''로 바꾸기)
2019/09/15 → 20190915
이것은 정규 표현으로 슬래시(/)의 조건에 매치하는 부분을 찾아내 .replace로 옮겨놓는 것으로 실현할 수 있습니다. 「/」는 정규 표현의 예약어가 되고 있기 때문에, 문자로서 취급하기 전에 「」를 붙여 할 필요가 있다.

  // 入力された値に「/」が含まれていたら空文字「''」と置き換える
  const trimmedDate = date.replace(/\//g, '');

전체 텍스트 표시하면 아래와 같은 이미지

<!DOCTYPE html>
<html lang="ja">
<head><meta charset="UTF-8"></head>
<body>
  <input type="text" class="js-date" value="2019/08/15">
</body>

<script>
  // inputに入力された値の取得
  const date = document.querySelector('.js-date').value;

  // コンソール出力 => "2019/08/15"
  // console.log(date);

  // 入力された値に「/」が含まれていたら空文字「''」と置き換える
  const trimmedDate = date.replace(/\//g, '');

  // コンソール出力 => "20190815"
  console.log(trimmedDate);
</script>
</html>

좋은 웹페이지 즐겨찾기