Server-Side/PHP2010. 10. 12. 21:44
$pattern = '/([\xEA-\xED][\x80-\xBF]{2}|[a-zA-Z0-9])+/';
$str = 'abc!@하나둘셋#123';
echo $str;
preg_match_all($pattern, $str, $match);
$str = implode('', $match[0]);
echo $str;
==================
abc!@하나둘셋#123
abc하나둘셋123

한글과 영어 숫자를 제외한 나머지문자는 무시하게 된다.




Posted by 준피
Client-Side/Android2010. 2. 15. 21:01
안드로이드용 계산기 프로그램을 만들고 있습니다.
허접하지만 어느정도 구현이 되었구요.
계산기 프로그램을 만드는 중에 정규식을 쓸 일이 있었습니다.
정규식을 이용하면서 많은 공부가 되었습니다.


String s = "3+12X9-4/2";

정규식을 이용해서 String에서 숫자와 사칙연산 기호를 분리하려고 합니다.

처음에 썼던 방식은 다음과 같습니다.

String regExp = "[^0-9]";
String[] operands = s.split(regExp);

숫자가 아닌 것들을 구분자로 해서 operands에 3, 12, 9, 4, 2를 넣었습니다.


사실 사칙연산에서 쓰인 '+', '-', 'X', '/' 를 구분자로 하고 싶었는데 '-'가 문제가 되었습니다.

String regExp = "[+-X/]";

위에서 처럼 하면 '-'기호가 문제가 되어 파싱이 안되더군요.

escape 문제인가 싶어서

String regExp = "[+\-X/]";

위의 방법으로 해봤는데 역시나 안되었습니다.

한참을 고민하다가 다른 시도를 해봤는데

String regExp = "[+\\-X/]";
String[] operands = s.split(regExp);
위에 있는 정규식으로 하니 숫자만 파싱이 되더군요.

생각해보니 \\는 \로 인식이 되어서  \\-는 \-로 알아들을테니

'-'기호 문제가 해결되었습니다.

String regExp = "(-|X|/|\\+)";
String regExp = "[-X/+]";

위에서처럼 해도 마찬가지로 파싱이 되었습니다.

============================<결론>=============================
String s = "3+12X9-4/2";
String regExp = "[^0-9]";
String[] operands = s.split(regExp);

위와 같이 하면 숫자만 파싱할 수 있다.
아래와 같은 정규식을 써도 숫자만 파싱할 수 있다.
String regExp = "[+\\-X/]";
String regExp = "(-|X|/|\\+)";
String regExp = "[-X/+]";

'Client-Side > Android' 카테고리의 다른 글

java BigDecimal 사칙연산  (0) 2010.02.23
api key 확인  (0) 2010.02.19
String vs StringBuffer  (0) 2010.02.10
안드로이드 개발환경 세팅(JDK, Eclipse, Android SDK)  (0) 2010.02.06
출발!  (0) 2010.02.06
Posted by 준피
Client-Side/Javascript2009. 9. 24. 15:04
var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
var email = $('email').value;

if( !email.match(emailRegEx) ){
window.alert("이메일 양식에 맞게 입력하세요.");
}

Posted by 준피