正则表达式的相关判定#

正则表达式的相关判定#

1、检查一个手机号是否为中国的手机号#

^1(3\d|4[57]|5[^4\D]|66|7[^249\D]|8\d|9[89])\d{8}$
该正则表达式的意思是:

- 以1开头,后面跟着一个满足条件的数字。
- 满足条件的数字可以是以下几种情况:
  - 以3开头,后面跟任意数字;
  - 以4开头,后面跟5或7;
  - 以5开头,后面跟除4以外的任意数字;
  - 以66开头,后面跟任意数字;
  - 以7开头,后面跟除2、4、9以外的任意数字;
  - 以8开头,后面跟任意数字;
  - 以9开头,后面跟8或9。
- 最后跟着8个数字。

如果一个手机号符合以上条件,则可以认为它是中国的手机号。

2、正则表达式匹配某一段字符串#

2.1、正则表达式匹配英文(大小写)空格任意字符串(例如:Jobs)数字中文字符(繁 + 简)#

1、正则表达式检查某一段字符串是否是全英文:^[A-Za-z]+$
2、正则表达式检查某一段字符串是否包含全英文:[A-Za-z]
3、正则表达式检查某一段字符串是否是全英文大写:^[A-Z]+$
4、正则表达式检查某一段字符串是否包含全英文大写:[A-Z]
5、正则表达式检查某一段字符串是否是全英文小写:^[a-z]+$
6、正则表达式检查某一段字符串是否包含全英文小写:[a-z]
7、正则表达式检查某一段字符串是否是包含空格:\s
8、正则表达式检查某一段字符串是否包含空格:\s
9、正则表达式检查某一段字符串是否是字符"Jobs":^Jobs$
10、正则表达式检查某一段字符串是否包含字符"Jobs":Jobs
11、正则表达式检查某一段字符串是否是数字:^\d+$
12、正则表达式检查某一段字符串是否包含数字:\d

这些正则表达式模式可能并不完美,具体取决于使用情况。此外,某些模式可能需要进行适当的调整以满足需求。

2.2、正则表达式匹配中文字符#

1、正则表达式检查某一段字符串是否是纯中文字符(包括了所有简体中文和繁体中文。不含空格、数字或其他符号):^[\u4e00-\u9fa5]+$
1、正则表达式检查某一段字符串是否包含中文字符(包括了所有简体中文和繁体中文):[\u4e00-\u9fa5]

区别 繁体中文 和 简体中文

正则表达式匹配中文繁体字和简体字需要考虑不同语言编码和字符集的差异。
一般来说,中文繁体字和简体字在Unicode编码下都有对应的字符码,因此可以使用Unicode编码进行匹配。

以下是匹配中文繁体字和简体字的正则表达式示例:

1、简体中文匹配:
在Unicode编码下,中文简体字的字符码范围是'\u4e00'到'\u9fa5',因此可以使用以下正则表达式进行简体中文匹配:
[\u4e00-\u9fa5]

2、繁体中文匹配:
中文繁体字的字符码范围比较复杂,包括Unicode标准中的中日韩(CJK)扩展A、B、C、D、E、F共六个区块。以下正则表达式可以匹配中文繁体字:
[\u4e00-\u9fa5\u3400-\u4dbf\U00020000-\U0002a6df\U0002a700-\U0002b73f\U0002b740-\U0002b81f\U0002b820-\U0002ceaf]

需要注意的是,以上正则表达式只是匹配中文繁体字和简体字的基本范围,具体的匹配规则还需要根据具体的文本内容进行适当调整。

2.3、正则表达式匹配 Emoji#

在Unicode编码中,Emoji的编码范围 = (0x1F600 ~ 0x1F64F)256个字符 + (0x1F300~0x1F5FF)203个字符,共计459个字符

匹配 UTF-16 编码中的所有 emoji 表情字符

/[\uD83C-\uDBFF\uDC00-\uDFFF]+/

具体解释如下:
Emoji字符是由两个Unicode编码表示的高代理项和低代理项组成的
[\uD83C-\uDBFF] 匹配高位代理区间中的字符,包括 \uD83C 到 \uDBFF 之间的字符。
\uDC00-\uDFFF 匹配低位代理区间中的字符,包括 \uDC00 到 \uDFFF 之间的字符。

由此可以得出整个正则表达式可以匹配一个或多个符合 UTF-16 标准的 emoji 表情字符。

2.4、正则表达式匹配网页地址#

匹配标准的网址格式,包括协议、主机名和路径等部分

^(https?://)?(www.)?[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+([/?].*)?$

解释如下:
^(https?://)? - 可以匹配以 "http://" 或 "https://" 开头的字符串,? 表示前面的部分可选。
(www.)? - 可以匹配以 "www." 开头的字符串,? 表示前面的部分可选。
[a-zA-Z0-9-]+ - 匹配一个或多个字母数字字符或短横线(-)。
(.[a-zA-Z0-9-]+)+ - 匹配一个或多个由点和字母数字字符组成的字符串,如 ".com"、".co.uk"。
([/?].*)? - 可以匹配以斜杠(/)或问号(?)开头的字符串,? 表示前面的部分可选。.*表示匹配任意字符零次或多次。

正则表达式检查某一段字符串是否是网页地址

^(http|https)://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ 

正则表达式检查某一段字符串是否包含网页地址

(http|https)://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)? 

这两个正则表达式的区别在于最后一个字符:第一个正则表达式末尾有一个 " $",表示该字符串必须以其结尾; 而第二个正则表达式末尾没有 “$",表示该字符串可以以其他字符结尾;

因此,第一个正则表达式更严格,只匹配完全符合要求的字符串, 而第二个正则表达式则可以匹配其中一部分符合要求的字符串。

利用 Python 中的 urllib 库来进行检查(更精确的判断网页地址。例如:看能否正确打开)

import re
import urllib.request

def is_url(string):
    pattern = re.compile(r'^https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+')
    return pattern.match(string) is not None

string = 'https://www.example.com'
if is_url(string):
    try:
        urllib.request.urlopen(string)
        print('有效网址')
    except urllib.error.URLError:
        print('无效网址')
else:
    print('非法网址')

2.5、正则表达式匹配特殊字符#

匹配任何非字母非数字的字符

^[^A-Za-z0-9]+$

除了字母和数字之外的任何字符(即标点符号、空格、特殊字符等)

[^A-Za-z0-9]

特殊字符

[!@#$%^&*()]

2.6、正则表达式匹配邮箱地址#

正则表达式检查某一段字符串是否是邮箱地址

^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

正则表达式检查某一段字符串是否包含邮箱地址

\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

这两个正则表达式的区别在于第一个正则表达式使用了”^" 和 “$” 符号来表示匹配完整的字符串,即整个字符串必须符合邮箱格式;

第二个正则表达式可以在字符串中匹配邮箱格式的子串,即子串符合邮箱格式即可。

例如,第二个正则表达式可以匹配"我的邮箱是xxx@qq.com"这句话中的"xxx@qq.com"子串,而第一个正则表达式却不行。