簡體   English   中英

這兩個正則表達式之間的區別?

[英]Difference between these two regular expressions?

這兩個正則表達式有什么區別?(使用php preg_match())

/^[0-9\\x{06F0}-\\x{06F9}]{1,}$/u

/^[0-9\\x{06F0}-\\x{06F9}\\x]{1,}$/u

第二個模式中最后一個\\x的含義是什么?

它被解釋為\\x00 (空字符),但幾乎可以肯定是由草率編輯或復制和粘貼引起的錯誤。

http://www.regular-expressions.info/unicode.html

...由於\\ x本身不是有效的正則表達式令牌...

我認為第二種模式無效。

根據此頁面http://www.regular-expressions.info/unicode.html ,\\ x僅有用,后跟unicode號:

由於\\ x本身不是有效的正則表達式令牌,因此\\ x {1234}永遠不會與\\ x 1234時間匹配。

真奇怪 Unicode字符的Php表示法是\\ x {}。 在perl中,這是同一回事。

但是php在正則表達式中有// u修飾符。 我認為這意味着unicode。 perl中沒有這樣的修飾符。

在perl regex中,將解析\\ x ##,其中需要##表示一個ascii字符。 如果它的\\ x或\\ x#,則忽略了一個非法的十六進制數字的警告(因為它需要2個數字,所以不能多或少),並且只接受序列中的有效十六進制數字。 如果您沒有\\ x中的數字,則使用\\ 0 ascii char等。

但是,任何\\ x {}表示法都可以,並且\\ x {0}等於\\ x {}。 \\ x {0}-\\ x {ff}被認為是ascii,\\ x {100}-被認為是unicode。

因此,\\ x是有效的十六進制/ unicode轉義序列,但其本身是假定的十六進制且不完整,可能不應該留給解析器默認機制使用。

據我所知,第二個\\x實際上是無效字符。 兩種表達方式都起作用嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM