js 문자열 검색
본문
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>문자열 검색</title>
<style>
.found { background-color: #ff0; }
</style>
</head>
<body>
<!-- 텍스트 문자열에서 일치하는 문자열을 모두 검색하고 강조하기 -->
<form id="textsearch">
<textarea id="incoming" cols="150" rows="10"></textarea>
<p>
Search patter: <input id="pattern" type="text" />
</p>
</form>
<button id="searchSubmit">Search for pattern</button>
<div id="searchResult"></div>
<script>
document.getElementById("searchSubmit").onclick = function() {
// 패턴 구하기
var pattern = document.getElementById("pattern").value;
var re = new RegExp(pattern, "g");
// 문자열 구하기
var searchString = document.getElementById("incoming").value;
var matchArray;
var resultString = "<pre>";
var first = 0;
var last = 0;
// 각각의 일치하는 부분 검색
while ( (matchArray = re.exec(searchString)) != null ) {
last = matchArray.index;
// 일치하는 모든 문자열을 연결
resultString += searchString.substring(first, last);
// 일치하는 부분에 강조 스타일이 지정된 class 추가
resultString += "<span class='found'>" + matchArray[0] + "</span>";
first = re.lastIndex;
// RegExp 객체의 lastIndex 속성을 이용해 검색 결과의 마지막 인덱스 접근 가능
}
// 문자열 종료
resultString += searchString.substring(first, searchString.length);
resultString += "</pre>";
// 화면에 출력
document.getElementById("searchResult").innerHTML = resultString;
}
</script>
</body>
</html>
구글에서 퍼온 코드인데요 textarea에
오리온 초코파이
작성후 Search patter 에 오리온 초 검색하면 정상동작 하는데
오리온초 라고 검색해도 같은결과가 나오게 하고싶은데 잘 안되네요...
도움부탁드립니다
!-->답변 2
정규식으로 구현이 가능한지 모르겠네요. 차라리 스크립트를 새로 하나 짜는 게 낫지 않을까 싶네요.
var string = document.getElementById("pattern").value;
var pattern = '';
var arr = [];
for (let i = 0; i < string.length; i++) {
arr.push(string.substr(i, 1));
}
pattern = arr.join('([\\s]+)?');
var re = new RegExp(pattern, "g");
정규식으로 처리하면 생각보다 간단하네요.
기존 코드에서 위 부분만 변경하면 문제없이 동작합니다.
!-->
답변을 작성하시기 전에 로그인 해주세요.