写个可以匹配一下各种特殊字符的正则表达式

((?=[\x21-\x7e]+)[^A-Za-z0-9])
x21-\x7e]+)[^A-Za-z0-9])

这个匹配所有键盘上可见的非字母和数字的符号

 

var patrn = /[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、]/im;  

     if (!patrn.test(str)) {// 如果包含特殊字符返回false

         return false;

     }

     return true;

这个是输入框防止特殊字符勿输入验证,包括键盘上所有特殊字符的英文和中文状态。需要者可以根据自身需求而定!谢谢!

[^\w\s]+
匹配非空 非字母 非数字 即可

 

 

1 数字:^[0-9]*$ 

2 n位的数字:^\d{n}$

3 至少n位的数字:^\d{n,}$ 

4 m-n位的数字:^\d{m,n}$ 

5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 

6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 

7 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 

8 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$ 

9 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$

10 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$

11 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$

12 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$

13 非负整数:^\d+$ 或 ^[1-9]\d*|0$

14 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$

15 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$

16 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$

17 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

18 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

19 浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

二、校验字符的表达式

1 汉字:^[\u4e00-\u9fa5]{0,}$ 

2 英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$ 

3 长度为3-20的所有字符:^.{3,20}$ 

4 由26个英文字母组成的字符串:^[A-Za-z]+$ 

5 由26个大写英文字母组成的字符串:^[A-Z]+$ 

6 由26个小写英文字母组成的字符串:^[a-z]+$ 

7 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$ 

8 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$ 

9 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$

10 中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$

11 可以输入含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+

12 禁止输入含有~的字符:[^~\x22]+

三、特殊需求表达式

1 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ 

a、自定义完美的邮箱验证:(java)

^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$

b、(js或jq)

^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$

2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.? 

3 InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ 

4 手机号码最新:

^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$(java)

^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\d{8}$(js或jq)

5 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$  

6 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7} 

7 身份证号(15位、18位数字):^\d{15}|\d{18}$ 

8 短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$ 

9 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

10 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$

11 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

12 日期格式:^\d{4}-\d{1,2}-\d{1,2}

13 一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$

14 一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$

15 钱的输入格式:

16 1.有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$

17 2.这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$

18 3.一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]*)$

19 4.这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:^[0-9]+(.[0-9]+)?$

20 5.必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:^[0-9]+(.[0-9]{2})?$

21 6.这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{1,2})?$

22 7.这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$

23 8.1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$

24 备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里

25 xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$

26 中文字符的正则表达式:[\u4e00-\u9fa5]

27 双字节字符:[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))

28 空白行的正则表达式:\n\s*\r (可以用来删除空白行)

29 HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? /> (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)

30 首尾空白字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)

31 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)

32 中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字) 33 IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址时有用) 34 IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)) 

正则表达式可以为空值,不为空则要格式。

格式如下:

^$|^(\d+|\-){7,}$ ("|"后边的是要符合格式。)

如果可以为空的空可以是空格和制表符那就这么写:^\s*$|^(\d+|\-){7,}$

正则表达式不为空用\S匹配,不能有空格可以用[^ ]匹配,[]中^后面是一个空格。

[size=12px]1。^d+$  //匹配非负整数(正整数 + 0) 
2。^[0-9]*[1-9][0-9]*$  //匹配正整数 
3。^((-d+)|(0+))$  //匹配非正整数(负整数 + 0) 
4。^-[0-9]*[1-9][0-9]*$  //匹配负整数 
5。^-?d+$    //匹配整数 
6。^d+(.d+)?$  //匹配非负浮点数(正浮点数 + 0) 
7。^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$  //匹配正浮点数 
8。^((-d+(.d+)?)|(0+(.0+)?))$  //匹配非正浮点数(负浮点数 + 0) 
9。^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$  //匹配负浮点数 
10。^(-?d+)(.d+)?$  //匹配浮点数 
11。^[A-Za-z]+$  //匹配由26个英文字母组成的字符串 
12。^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串 
13。^[a-z]+$  //匹配由26个英文字母的小写组成的字符串 
14。^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串 
15。^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串 
16。^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$    //匹配email地址 
17。^[a-zA-z]+://匹配(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$  //匹配url 
18。匹配中文字符的正则表达式: [u4e00-u9fa5]
19。匹配双字节字符(包括汉字在内):[^x00-xff]
20。应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
String.prototype.len=function(){return this.replace([^x00-xff]/g,"aa").length;}
21。匹配空行的正则表达式:n[s| ]*r
22。匹配HTML标记的正则表达式:/<(.*)>.*</1>|<(.*) />/ 
23。匹配首尾空格的正则表达式:(^s*)|(s*$)

* 正则表达式用例
  * 1、^S+[a-z A-Z]$ 不能为空 不能有空格  只能是英文字母
  * 2、S{6,}         不能为空 六位以上
  * 3、^d+$          不能有空格 不能非数字
  * 4、(.*)(.jpg|.bmp)$ 只能是jpg和bmp格式
  * 5、^d{4}-d{1,2}-d{1,2}$ 只能是2004-10-22格式
  * 6、^0$            至少选一项
  * 7、^0{2,}$        至少选两项
  * 8、^[s|S]{20,}$ 不能为空 二十字以上
  * 9、^+?[a-z0-9](([-+.]|[_]+)?[a-z0-9]+)*@([a-z0-9]+(.|-))+[a-z]{2,6}$邮件
  * 10、w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*([,;]s*w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*)* 输入多个地址用逗号或空格分隔邮件
  * 11、^(([0-9]+))?[0-9]{7,8}$电话号码7位或8位或前面有区号例如(022)87341628
  * 12、^[a-z A-Z 0-9 _]+@[a-z A-Z 0-9 _]+(.[a-z A-Z 0-9 _]+)+(,[a-z A-Z 0-9 _]+@[a-z A-Z 0-9 _]+(.[a-z A-Z 0-9 _]+)+)*$
  *     只能是字母、数字、下划线;必须有@和.同时格式要规范 邮件
  * 13 ^w+@w+(.w+)+(,w+@w+(.w+)+)*$上面表达式也可以写成这样子,更精练。
    14   ^w+((-w+)|(.w+))*@w+((.|-)w+)*.w+$ [/size]

<think>首先,用户的问题是:“我想查找用于匹配特殊字符正则表达式 请问用于匹配特殊字符正则表达式”。用户想了解用于匹配特殊字符正则表达式。 根据系统级指令: - 所有行内数学表达式必须使用 $...$ 格式。 - 独立公式必须使用 $$...$$ 格式并单独成段。 - LaTeX 语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 用户可见层指令: - 回答结构清晰,帮助用户逐步解决问题,保证回答真实可靠。 参考站内引用: - 引用[1]: 提供了正则表达式的语法,包括 . \d \D \s \S \w 等。 - 引用[2]: 是 Java 代码,用于正则表达式匹配,涉及字符串匹配。 - 引用[3]: 是关于匹配特殊字符正则表达式,使用 /^[\u4e00-\u9fa50-9A-Za-z]*$/ 来匹配汉字、数字、字母。 用户的问题是关于匹配特殊字符正则表达式特殊字符通常指非字母、非数字、非汉字的字符,如标点符号、空格等。 从引用[1]中,有 \S 匹配任何非空白字符,等价于 [^ \f\n\r\t\v]。但用户想匹配特殊字符,可能是匹配这些字符本身。 在正则表达式中,特殊字符本身需要转义,因为它们有特殊含义。例如,. 匹配任意字符,但如果想匹配实际的点号,需要成 \.。 用户说“匹配特殊字符”,意思是匹配那些被认为是特殊字符的字符,如 !@#$%^&*() 等。 从引用[3],它使用 /^[\u4e00-\u9fa50-9A-Za-z]*$/ 来匹配特殊字符(即只允许汉字、数字、字母)。那么,匹配特殊字符可以是通过排除这些字符来实现。 所以,匹配特殊字符正则表达式可以是:匹配任何不在汉字、数字、字母范围内的字符。 在正则表达式中,可以使用否定字符类。 例如,[^\u4e00-\u9fa5a-zA-Z0-9] 匹配任何不是汉字、不是字母、不是数字的字符。 在引用[3]中,它是 /^[\u4e00-\u9fa50-9A-Za-z]*$/,所以否定就是 [^\u4e00-\u9fa50-9A-Za-z]。 在正则表达式中,特殊字符通常包括标点、符号等。 另一个常见方式是匹配空白字符或特定符号。 但用户指定了“特殊字符”,在上下文中,可能指非字母数字字符。 在编程中,经常用 \W 来匹配非单词字符,等价于 [^a-zA-Z0-9_],但注意,这不包括汉字,因为 \w 在标准正则中只匹配 [a-zA-Z0-9_]。 在引用[1]中,\w 匹配包括下划线的任何单词字符,等价于 [A-Za-z0-9_]。 所以 \W 匹配非单词字符,即 [^A-Za-z0-9_]。 但汉字不被包括在内,所以如果包括汉字,需要自定义。 在引用[3]中,他们包括了汉字。 所以,为了匹配特殊字符,即排除字母、数字、汉字,我们可以使用 [^\u4e00-\u9fa5a-zA-Z0-9]。 在正则表达式中,需要正确转义。 在 JavaScript 中,如引用[3],使用 /^[\u4e00-\u9fa50-9A-Za-z]*$/。 所以,匹配特殊字符正则可以是 /[^\u4e00-\u9fa5a-zA-Z0-9]/。 这匹配任何单个特殊字符。 如果用户想匹配字符串中是否包含特殊字符,可以使用这个。 现在,构建回答。 回答结构: 1. 解释什么是特殊字符正则上下文。 2. 提供正则表达式匹配特殊字符。 3. 解释表达式。 4. 给出示例。 5. 生成相关问题。 使用中文。 引用站内引用。 从引用[1],有 \S 和 \s,但 \s 是空白字符,不是所有特殊字符。 引用[1]中,. 匹配除 "\n" 之外的任何字符,但包括特殊字符。 用户想匹配特殊字符本身。 在引用[3],它匹配特殊字符,所以我们可以取反。 所以,在回答中引用引用[3]。 引用[3]:匹配特殊字符正则。而\u4e00-\u9fa5标识汉字 0-9标识数字 A-Za-z标识大小字母 ... 使用 /^[\u4e00-\u9fa50-9A-Za-z]*$/ 来测试字符是否非特殊。 所以,匹配特殊字符正则可以是 [^\u4e00-\u9fa5a-zA-Z0-9]。 在代码中,如 JavaScript,可以为 /[^\u4e00-\u9fa5a-zA-Z0-9]/。 现在,回答。 步骤: 1. 介绍:用户想查找用于匹配特殊字符正则表达式。 2. 定义:在正则表达式中,特殊字符通常指非字母、非数字、非汉字的字符,如标点符号、空格等。 3. 提供表达式:基于引用[3],我们可以使用否定字符类来匹配特殊字符。 表达式:$[^\u4e00-\u9fa5a-zA-Z0-9]$ 在行内数学表达式中,使用 $...$,但这是正则表达式,不是数学表达式。系统指令说“所有行内数学表达式(包括变量、不等式、方程等)必须使用$...$格式”,但正则表达式不是数学表达式,所以可能不需要用 $...$。指令说“数学表达式”,但正则表达式是字符串模式。 再看指令: "所有行内数学表达式(包括变量、不等式、方程等)必须使用$...$格式",正则表达式不属于这些,所以可能不需要。但为了安全,我可以把它当作字符串处理。 在回答中,正则表达式可以用代码块或直接。 在示例中,有代码块。 所以,我可以使用代码块来显示正则表达式。 例如: ```regex [^\u4e00-\u9fa5a-zA-Z0-9] ``` 在中文上下文中,可能需要解释。 生成相关问题。 相关问题: 1. 如何测试一个字符串是否包含特殊字符? 2. 正则表达式特殊字符的转义方法? 3. 匹配特定特殊字符(如只匹配标点符号)的正则表达式? 确保回答真实可靠。 完整回答: - 开头:直接回答问题。 - 解释:简要说明。 - 给出表达式。 - 示例。 - 引用。 - 相关问题。</think>### 用于匹配特殊字符正则表达式 根据您的查询,您希望查找用于匹配特殊字符正则表达式。在正则表达式中,“特殊字符”通常指非字母、非数字、非汉字的字符,例如标点符号(如 `!`、`@`、`#`)、空格、制表符、数学符号等。这些字符在字符串处理中常需要被单独识别或过滤。下面我将逐步解释如何构建和实现这样的正则表达式,确保回答基于可靠来源(如站内引用)并结构清晰。 #### 步骤 1: 理解需求 - **特殊字符的定义**:在正则上下文中,特殊字符是那些不属于字母(A-Z, a-z)、数字(0-9)或汉字(\u4e00-\u9fa5)的字符。例如,在字符串 `"Hello! 世界?"` 中,`!` 和 `?` 就是特殊字符。 - **匹配原理**:正则表达式通过字符类(character class)来匹配特定字符集。要匹配特殊字符,我们可以使用否定字符类(negated character class),即排除字母、数字和汉字的字符集。这基于引用[3]中的方法,它使用正则表达式匹配特殊字符(只允许汉字、数字、字母),我们可以取其反义来匹配特殊字符[^3]。 #### 步骤 2: 提供正则表达式 基于引用[3]的灵感,匹配特殊字符的通用正则表达式为: ```regex [^\u4e00-\u9fa5a-zA-Z0-9] ``` - **解释**: - `[^...]` 表示否定字符类,匹配任何不在指定范围内的字符。 - `\u4e00-\u9fa5` 匹配所有汉字(Unicode 范围)。 - `a-zA-Z` 匹配所有大和小字母。 - `0-9` 匹配所有数字。 - 因此,`[^\u4e00-\u9fa5a-zA-Z0-9]` 匹配任何非汉字、非字母、非数字的字符(即特殊字符)。 - **适用范围**:此表达式在大多数正则引擎中有效(如 JavaScript、Python、Java),但需根据编程语言调整转义。例如: - 在 JavaScript 中,可直接使用:`/[^\u4e00-\u9fa5a-zA-Z0-9]/`。 - 在 Python 中,需使用 `re` 模块:`re.compile(r'[^\u4e00-\u9fa5a-zA-Z0-9]')`。 #### 步骤 3: 示例演示 假设您想测试一个字符串是否包含特殊字符,以下是一个简单的 JavaScript 示例(基于引用[3]的代码风格): ```javascript function containsSpecialChar(input) { const regex = /[^\u4e00-\u9fa5a-zA-Z0-9]/; // 匹配特殊字符正则表达式 return regex.test(input); // 如果包含特殊字符,返回 true;否则 false } // 测试用例 console.log(containsSpecialChar("Hello世界")); // 输出: false(无特殊字符) console.log(containsSpecialChar("Hello!世界")); // 输出: true(包含!) console.log(containsSpecialChar("123@abc")); // 输出: true(包含@) ``` - **说明**:此函数使用正则表达式检测输入字符串。如果匹配特殊字符(如 `!` 或 `@`),返回 `true`。您可以根据需求修改,例如提取所有特殊字符或替换它们。 #### 注意事项 - **转义特殊字符**:在正则表达式中,某些字符(如 `.`、`*`、`?`)本身是元字符,需转义才能匹配字面值。例如,匹配字面点号需用 `\.`。更多元字符参考引用[1]中的正则语法[^1]。 - **性能考虑**:此表达式在短字符串中高效,但长字符串可能需优化(如避免贪婪匹配)。 - **引用依据**:本回答基于站内引用[3]的正则方法,它定义了非特殊字符的范围,我们取其反义来实现匹配特殊字符[^3]。 ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值