PHP正则表达式问题?
阿神
阿神 2017-05-16 13:07:23
0
1
371

当我使用正则表达式的时候发现了很诡异的现象,如下:

  • [­--\ˇ]

  • [­_-\ˇ]

  • [­=-\ˇ]

就是第一个不能匹配字母,第二个能匹配字母,第三个能匹配字母和斜杠

我只是希望在字符串里出现这几个特殊字符就替换,没想到连字母都替换了,我知道能用其他写法实现此需求,但我就是不知道这样写为什么会这么诡异,大神们解释下这个正则。

卧槽还有这几个,写个正则这么费劲儿

  • [+-~­­]

  • [i-~­­]

  • [--~­­]

  • [_-~­­]

  • [=-~­­]

  • ...

感兴趣就和hello w\o\r\l\d匹配测试一下。

为什么会这样?

阿神
阿神

闭关修行中......

모든 응답(1)
我想大声告诉你

우선 첫 번째 예시는 법적 단골이 아니어서 결과가 나오지 않습니다.

다음 두 예제의 정규식은 가장 기본적인 [a-z] 구문입니다. 즉, 한 문자의 모든 문자를 다른 문자 인코딩과 일치시키는 것을 의미합니다. [a-z] 语法,表示匹配从一个字符到另一个字符编码之间的所有字符。

两例子中,起始字符分别是 _=, 终止字符都是全角符号 ˇ
全角符号编码大于所有 ASCII 编码,所有在匹配 AscII 编码时都匹配,不用多考虑,我们查下起始字符的 ASCII 编码。

ASCII 编码中:
/ < 0-9 < = < A-Z < < _ < a-z

所以, [=-ˇ] 能匹配大写字母、反斜杠、小写字母,[_-ˇ]

두 가지 예에서 시작 문자는 _=이고 끝 문자는 모두 전자 기호 ß입니다.
전폭 기호 인코딩은 모든 ASCII 인코딩보다 크며 AscII 인코딩과 일치할 때 모두 일치합니다. 너무 많이 생각하지 않고 시작 문자의 ASCII 인코딩을 확인합니다.

ASCII 인코딩:
/ 0-9 = 코드> < _ a-z

🎜그래서 [=- ]는 대문자, 백슬래시, 소문자와 일치할 수 있고 [_- ]는 소문자만 일치할 수 있으며 둘 다 일치할 수 없습니다. 슬래시와 숫자가 일치합니다. 🎜 🎜 🎜둘째, 이렇게 이상한 정규 표현식은 유지 관리가 어렵기 때문에 작성하지 않는 것이 좋습니다. 🎜
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!