我想正則表達式匹配的電話號碼,我想出了下面的代碼:Python的正則表達式給出假陰性
pattern = re.compile("^(1?[2-9]\d{2}([.\-\s])?\d{3}\2\d{4}){1}$")
if pattern.match(phoneNumber):
return True
這應該與數字,如:
1214-444-4444
214.333.3333
但是,這不符合上述任何例子。我已經在幾個不同的正則表達式驗證器上進行了測試,並且它們都是成功的。我假設Python正則表達式引擎是不同的,但經過四處搜索我找不到差異。有什麼建議麼?
https://regex101.com/r/QVqpFn/1不能在regex101上工作 –
**總是**使用[原始字符串](https://docs.python.org/3/reference/lexical_analysis。 html#字符串和字節文字)的Python正則表達式。在這種情況下,'\ 2'插入代碼點'\ x02',而不是反斜槓和2(它必須是反斜槓,2代表''re'才能看到正在嘗試使用的正則表達式轉義符)。當下一個字符不是字符串轉義的時候,Python不需要反斜槓就可以「逃脫」,但它會讓你'\ 2'(和'\ b','\ a','\ f'等)。在文字之前加一個'r'使它變成raw:'r'^(...' – ShadowRanger
奇怪的是,它可以在http://www.regexpal.com/ – CuriousGeorge