올리고 주문을 진행하면서 정규표현식을 적용한 사례입니다.
태그로는 textarea로 진행하겠습니다.
<textarea id="customSeq" name="customSeq[]" onkeyup="fnSeqKeyUp(this)"></textarea>
textarea{ text-transform : uppercase;" }
function fnSeqKeyUp(data){
var str = $(data).val();
var patten = /^[ABCDGHKMNRSTVWY]*$/gi;
var convertPatten = /[^(ABCDGHKMNRSTVWY)]/gi;
var test = patten.test(str);
if(test!=true){
var convertStr = str.replace(convertPatten,'');
$(data).val(convertStr);
}
}
patten.test(str)를 이용하여 true, false으로 분기시킵니다.
해당 패턴은 " 만약 [ ]에 속하지 않은 항목이 하나라도 있다면 매칭이 안된다" 입니다.
만약 str 문자열에 패턴에 해당되는 것이 속해있다면 if문을 거치게됩니다.
거친다면, var convertStr = str.replace(convertPatten,'')로
해당 패턴은 " 모든 항목에 대해서 [ ]안에 속해있지 않는 것에 대해 매칭 " 입니다.
convertPatten 패턴에 매칭되는 모든 문자열을 ''으로 치환시켜줍니다.
Oligo : span으로 형성되어 .text()로 값을 변경시켜줄 수 밖에 없었습니다.
성질을 추측해본 결과 다시그려주는 것으로 마우스 커서에 불안감이 있습니다.
Custom : textarea로 형성되어 .val()로 값을 변경시켜줄 수 있습니다.커서 위치도 정상적으로 동작하였습니다.
정규표현식을 JS에서 어떻게 적용하냐면,
var patten = /[^a-z]/gi;
/ 정규표현식 문법 / 플래그로 구성되어 있습니다.
플래그의 역할에는 다음과 같습니다.