정규식과 슬래시 일치


90

나는 JavaScript에 대한 경험이 많지 않지만 @또는 을 사용하는 대신을 사용하는 태그 시스템을 만들려고 #합니다 /.

var start = /#/ig; // @ Match

var word = /#(\w+)/ig; //@abc Match

어떻게 사용할 수있는 /대신의 #. 나는 var slash = '/'하고 추가 하려고 시도 + slash +했지만 실패했습니다.


1
제목을 변경하십시오. 그리고 당신은 정말로 무엇을하려고합니까? 귀하의 질문을 읽은 후에도 여전히 잘 모르겠습니다.
— OptimusCrime

이해가 잘 안됩니다.
— John Strickler 2013 년

답변:


123

이렇게 탈출 할 수 있습니다.

/\//ig; //  Matches /

또는 그냥 indexOf 사용

if(str.indexOf("/") > -1)

감사합니다 벤, 저도 시도했지만 끝에 \를 추가했습니다.
— iBrazilian2 2013 년



6

정규식에서 "/"는 이스케이프해야하는 특수 문자입니다 (일명 앞에 \를 배치하여 제공 할 수있는 특수 함수를 무효화하여 플래그가 지정됨).

필요한 것은 다음과 같습니다.

var word = /\/(\w+)/ig; //   /abc Match

여기에서 RegEx 특수 문자에 대해 읽어보십시오 : http://www.regular-expressions.info/characters.html


17
"/"는 정규식에서 특수 문자가 아닙니다. 그러나 정규 표현식이 시작되고 끝나는 위치를 구분하는 것은 JavaScript의 특수 문자입니다.
— sokkyoku

5

다음과 같이 슬래시를 문자 그룹으로 묶어 특수 JS 처리 슬래시를 해결할 수도 있습니다.

const start = /[/]/g;
"/dev/null".match(start)     // => ["/", "/"]

const word = /[/](\w+)/ig;
"/dev/null".match(word)      // => ["/dev", "/null"]

2
가독성을위한 정규식 한 문자 이상 만들 않습니다 탈출 방지하기 위해 문자 집합을 사용 하나, 그러나 그것의 가치는 : /[/]/시각적으로 더 명확보다 후행 구분 기호를 구별합니다 /\//.
— Dem Pilafian

2
/[/]/읽기 쉽고 작동하지만 일부 RegEx 유효성 검사기는 문자 그룹 내에서도 "이스케이프 처리되지 않은 구분 기호는 백 슬래시로 이스케이프해야합니다"라고 보고 합니다 . 그래서 저는 추악한 형태 로 다시 전환했습니다 . /\//
— Dem Pilafian 19


1

나를 위해 /C #의 날짜 와 일치하려고했습니다 . 나는 다음을 사용하여 그것을했다 (\/).

string pattern = "([0-9])([0-9])?(\/)([0-9])([0-9])?(\/)(\d{4})";
string text = "Start Date: 4/1/2018";

Match m = Regex.Match(text, pattern);

if (m.Success) 
{ 
    Console.WriteLine(match.Groups[0].Value);  // 4/1/2018
}
else
{
    Console.WriteLine("Not Found!");
}

자바 스크립트도 (\/).


Downvoter, 설명 하시겠습니까? 이것은 효과가 있으며 테스트를 통해 증명했습니다.
— vapcguy

1
사고라고 생각합니다. 죄송합니다. 실행 취소를 시도했지만 답변을 수정하지 않으면 투표가 잠겼습니다. 내가 보는 유일한 것은 사용하지 않는 것으로 보이는 그룹 캡처 로그가 있다는 것입니다. 모든 것이 괄호 안에있는 이유는 무엇입니까?
— Ryan Quinn

1
@RyanQuinn 설명해 주셔서 감사합니다. 나는 괄호를 사용하여 내가 기대했던 특정 숫자를 나타 내기 위해 함께 그룹화했습니다. 또한 그것을 테스트하기 위해 사용했던 사이트에서 요구하는 것처럼 보였습니다. regexr.com 내 게시물을 편집했습니다 (마지막에 공백을 추가했습니다). 원하는 경우 반대표 를 제거 할 수 있습니다.
— vapcguy

0

\및로 구분 된 텍스트를 추출 할 때 앞서 말한 것과 관련된 두 가지 문제가 발생 했으며 처음에 필요한를 /사용 new RegExp하는 것 외에 둘 다에 맞는 솔루션을 찾았습니다 \\\\. 이러한 결과는 Chrome 및 IE11에 있습니다.

정규식

/\\(.*)\//g

작동하지 않습니다. //이스케이프 문자에도 불구하고 주석의 시작으로 해석되는 것 같습니다 . 정규식 (일반적이지는 않지만 내 경우에도 똑같이 유효 함)

/\b/\\(.*)\/\b/g

또한 작동하지 않습니다. 두 번째 /는 이스케이프 문자에도 불구하고 정규식을 종료 한다고 생각합니다 .

무엇 나를 위해 작업을 수행하는 것은 표현하는 /등 \x2F의 16 진수 표현이다, /. 를 사용하는 것보다 더 효율적이고 이해하기 쉽다고 생각 new RegExp하지만, 물론 16 진수 코드를 식별하려면 주석이 필요합니다.


0

슬래시는 특수 문자이므로 슬래시 앞에 백 슬래시를 추가해야 작동합니다.

$patterm = "/[0-9]{2}+(?:-|.|\/)+[a-zA-Z]{3}+(?:-|.|\/)+[0-9]{4}/";

여기서 /는 검색을 나타냅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.