我有一個(gè)正則表達(dá)式來匹配格式為電話號(hào)碼或類似于電話號(hào)碼的數(shù)字。我必須省略以正斜杠開頭的數(shù)字,因?yàn)檫@可能是 URL 的一部分。我使用了以下正則表達(dá)式。它在所有情況下都能很好地工作,但正則表達(dá)式會(huì)忽略句子開頭沒有正斜杠的任何數(shù)字。誰(shuí)能幫我解決這里的錯(cuò)誤嗎?/[^\/0-9](\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{2,3}[\s.-]?\d{3}/i測(cè)試案例1:23242424 242424242 24242424424 2424244242 242 24242424/1212121212 1 05454545454 5454045454 0115545454 /454545454輸出 1:(以粗體斜體表示的匹配項(xiàng))23242424 242424242 24242424424 2424244242 242 24242424/1212121212 1 05454545454 5454045454 0115545454 /454545454測(cè)試用例2:(第一個(gè)數(shù)字前面有一個(gè)空格)23242424 242424242 24242424424 2424244242 242 24242424/1212121212 1 05454545454 5454045454 0115545454 /454545454輸出 2:(以粗體斜體表示的匹配項(xiàng))23242424 242424242 24242424424 2424244242 242 24242424/1212121212 1 05454545454 5454045454 0115545454 /454545454
2 回答

阿波羅的戰(zhàn)車
TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以使用否定后向查找而不是否定字符類來匹配字符串位置的開頭:
'/(?<![\/0-9])(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{2,3}[\s.-]?\d{3}/' ^^^^^^^^^^^^
請(qǐng)參閱正則表達(dá)式演示
這里,(?<![\/0-9])
是一個(gè)負(fù)向后查找,與前面沒有緊接正斜杠或數(shù)字的位置相匹配。
請(qǐng)注意,您不需要不區(qū)分大小寫的修飾符,除非這是您還匹配字母的較長(zhǎng)模式的一部分。

泛舟湖上清波郎朗
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
我的方法非常殘酷,但在搜索數(shù)字之前,我會(huì)簡(jiǎn)單地從主字符串中刪除所有以 / 開頭的數(shù)字。就像是$str = preg_replace('/\/\d+/', '', $str);
- 2 回答
- 0 關(guān)注
- 218 瀏覽
添加回答
舉報(bào)
0/150
提交
取消