JavaScript :: 정규식으로 해시태그(#) 분류하기(Regexp for hashtags)
정규식을 만들어보기 이전에 제일 기본적인 표현을 살펴보자.
정규식은 / 사이에 적는다.
/여기에적힌단어가정규식/
g는 global로 g가없으면 하나만 선택된다.
g가 있으면 해당하는 모든 항목이 선택된다.
예를 들어,
/#/g
라고하면 모든 #이 선택된다.
/#./g
#다음 한 글자까지 포함.
하지만 해시태그가 몇 글자로 이루어져있는지 알수 없다.
/#.+/g
# 이후의 모든 글자 선택
정규식의 대괄호 안에 있는 글자들은 그 글자만 포함한다는 뜻.
/#[해첫익]/g
은 # 바로다음 '해, 첫, 익'이 오는 글자만 선택.
^은 그 글자들을 제외한 다른 글자만 포함한다.
/#[^해첫익]/g
해, 첫, 익 이외의 다른 단어만 포함된다.
/#[^두익해]+/
이렇게 사용하면
# + (두, 익, 해 제외) + 그 이후단어
까지해서 위 화면처럼 선택된다.
해쉬태그는 띄어쓰기로 구분하므로
띄어쓰기가 있는 부분까지 선택하도록 만들어보자.
정규식으로 띄어쓰기는 \s 이다.
/#[^\s]+/
이렇게 사용하면 #부터 띄어쓰기가 있는 부분까지 선택된다.
하지만 #첫번째#두번째 처럼 해시태그사이에 띄워쓰기가 되어있지 않은 경우
따로따로 선택하도록 만들어야한다.
그러기위해서 #태그도 제외시켜준다.
/#[^\s#]+/g
이렇게 사용하면 해시태그한 단어들을 모두 선택한다.
정규식 split 하기
괄호없이 splite하면 해시태그부분은 제거되고 반환한다.
그러므로 괄호를 사용하여 다음과 같이 표시해야한다.
.split(/(정규식)/g)
이 사이트에 들어가면 정규식을 테스트해 볼 수 있다.
RegExr: Learn, Build, & Test RegEx
RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).
regexr.com