나는 프로그래밍에서 "역"이 무엇을 의미하는지 항상 명확하지는 않습니다.
내가 제시 한 예를 바탕으로 독점적으로 솔루션을 제안하려면 빈스가 제시 한 것과 매우 유사한 것을 제시 할 것입니다. 캡처 패턴을 반복하여 필요로하는 패턴과 잠재적으로 임의의 숫자를 캡처하는 정규 표현식을 작성하는 데 어려움을 겪고 있습니다. 그리고 이것이 합리적인 방법으로 가능할 지 확신하지 못합니다. 그러나 2 단계 접근법은 간단해야합니다.
'jQuery replace function'을 참조 할 때 jQuery replaceWith 및 replaceAll 함수가 아닌 JavaScript의 replace 함수 (String 객체의 멤버)를 참조하고있는 것으로 보입니다. 후자는 '돔 조작'기능입니다. 그러나, 오해하는 경우에 나를 정정하십시오. 일부 가상의 입력에 따라 예를 들어
, 당신은
<b>var numeric_raw = jQuery('input.textbox').attr ('value').replace (/[^0-9.]/g, "")</b>
는 숫자 또는 기간없는 텍스트 필드에 입력 된 값에서 모든 문자를 제거하는 데 사용할 수있는, 당신은
<b>var numeric_str = numeric_raw.replace (/^[0]*(\d+\.\d{1,2}).*$/, "$1")</b>
내가 선도 0 필터링을 포함하고 있다는 점에서 여기에 지정된 클래스 사이 빈스의 대답의 차이를 사용할 수 있습니다. 빈스 (Vince)의 첫 번째 전범국에 여분의 '/'가있을 수 있습니다. 그러나 어쩌면 내가 포기하지 않은 목적이있을 수도 있습니다.
"역행렬"과 관련하여 초기 문의를 이해하는 한 가지 방법은 제공 한 것과 반대의 표현식을 찾는 것입니다. 입력 한 표현식 (/[0-9]+(.[0-9]{1,2})?/)은 정수와 소수점 이하 두 자리를 모두 일치하지만 또한 임의의 한자리 숫자와 일치하므로 주어진 입력 문자열에 대해 상상할 수없는 일치 항목을 식별 할 수 있습니다. 표현식에 앵커 ('^', '$')가 없으므로 가능한 여러 일치를 허용 할 수 있습니다. 예를 들어 문자열 "1.111"에서 "1.11"과 "1"은 사용자가 제공 한 패턴과 일치합니다.
당신의 패턴과 일치하지 않는 문자열과 일치 한 패턴은 다음과 같다, 또는 적어도 대부분의 경우는이 될 수 않는 나에게 나타납니다
/^(?:(?!.*[0-9]+(\.[0-9]{1,2})?).*)*$/
- 사람이 식별 할 수있는 경우 정확하게 '역 (inverse)'패턴 이니 자유롭게 생각해보십시오. - 최소한의 뉘앙스를 위해 미리보기가 어떻게 해석되는지 이해하는 데 어려움을 겪고 있습니다.
요즘은 JavaScript가 지원하는 "부정적인 예측"기능에 의존합니다. 자세한 내용은 여러 가지 stackoverflow 게시 (예 : Regular Expressions and negating a whole character group)를 참조 할 수 있으며 인터넷에서 "lookahead"및 "lookbehind"에 대해 설명하는 여러 리소스가 있습니다.
나는이 답변이 이미 주어진 답변과 관련하여 약간의 중복성을 가지고 있다고 가정합니다. 나는 원래 포스터의 게시물이나 Vince의 대답에 대해 (필자의 대답의 일부를 작성하는 대신) 댓글을 달았을 수도 있지만 아직 의견을 낼 수 있어요!
아마도 정규식을 무효화하여 수행하려는 실제 작업을 더 잘 수행 할 수 있습니까? 또한 사용중인 프로그래밍 언어를 제공해주십시오. – justhalf
그리고 예상되는 문자열은 정확히 무엇입니까? – justhalf
@justhalf 내가 원하는 것을보다 명확하게하기 위해 질문을 업데이트했습니다. – LJS