首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

只允许两个下划线的正则表达式,没有其他特殊符号,前一个或下一个字符应为数字或字母

要创建一个正则表达式,只允许两个连续的下划线,并且这两个下划线的前一个或后一个字符必须是数字或字母,可以使用以下正则表达式:

代码语言:txt
复制
(?<=[a-zA-Z0-9])__(?=[a-zA-Z0-9])

基础概念

  • 正则表达式(Regular Expression):一种强大的文本处理工具,用于搜索、替换、检查或操作符合特定模式的字符串。
  • 前瞻(Lookahead)后顾(Lookbehind) 断言:用于检查某个位置之前或之后的字符是否符合特定条件,而不实际消耗这些字符。

相关优势

  • 精确匹配:能够精确地定位到符合条件的下划线组合。
  • 高效处理:正则表达式引擎优化了对这类模式的处理,使得匹配速度快。

类型与应用场景

  • 类型:这是一个带有前瞻和后顾断言的正则表达式。
  • 应用场景:常用于验证输入格式,如用户名、密码规则制定,确保特定格式的正确性。

示例代码(Python)

代码语言:txt
复制
import re

pattern = r'(?<=[a-zA-Z0-9])__(?=[a-zA-Z0-9])'

test_strings = ['user__name', 'user__123', '__invalid', 'user_123', 'user__name1']

for s in test_strings:
    if re.search(pattern, s):
        print(f"'{s}' 符合规则")
    else:
        print(f"'{s}' 不符合规则")

解释

  • (?<=[a-zA-Z0-9]):这是一个后顾断言,确保下划线前是一个字母或数字。
  • __:匹配两个连续的下划线。
  • (?=[a-zA-Z0-9]):这是一个前瞻断言,确保下划线后是一个字母或数字。

可能遇到的问题及解决方法

问题:如果正则表达式引擎不支持前瞻或后顾断言怎么办? 解决方法:可以考虑使用捕获组和其他逻辑来实现相同的功能,但通常会复杂一些。例如,可以通过两次匹配和逻辑判断来实现。

通过上述正则表达式和示例代码,可以有效地验证字符串中下划线的使用是否符合特定的格式要求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

写几个正则表达式:只允许输入汉字、数字、字母、中英文小括号,并且10个字符以内|只允许输入汉字、数字、字母、英文小括号|电话号码正则表达式

---导文写几个正则表达式 有:1. 可以输入只允许输入汉字、数字、字母、中英文小括号,并且10个字符以内,除此之外其他的特殊符号不允许输入。2....可以输入只允许输入汉字、数字、字母、英文小括号,除此之外其他的特殊符号不允许输入,除此之外其他的特殊符号不允许输入。3. 电话号码正则表达式 4....只允许只能输入中文和大小写字母,并且10个字符以内内容案例1:写个正则表达式 ,可以输入只允许输入汉字、数字、字母、中英文小括号,并且10个字符以内。...除此之外其他的特殊符号不允许输入,除此之外其他的特殊符号不允许输入。.../^[\w\u4E00-\u9FA5()()&]{0,10}$/案例2:写个正则表达式 ,可以输入只允许输入汉字、数字、字母、英文小括号,除此之外其他的特殊符号不允许输入,除此之外其他的特殊符号不允许输入

1.7K21

有必要了解的正则表达式

文本的复杂处理 一种强大而灵活的文本处理工具: 大部分编程语言 、 数据库、文本编辑器、开发环境都支持正则表达式 2、基本语法 2.1、普通字符 字母、数字、汉字、下划线、以及没有特殊定义的标点符号...\w 任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个 \W 除了字母、数字和下划线外的任一一个字符 \s 包括空格、制表符、换行符等空白字符的其中任意一个 \S 除了空格,..."a" 或 "b" 或 "5" 或 "@" [^ abc] 匹配 "a","b","c" 之外的任意一个字符 [f-k] 匹配 "f"~"k" 之间的任意一个字母 [^A-F0-3] 匹配 "A"~"...F","0"~"3" 之外的任意一个字符 正则表达式的特殊符号,被包含到中括号中,则失去特殊意义,除了^,-之外。...匹配次数中的非贪婪模式(匹配字符越少越好,修饰匹配次数的特殊符号后再加上一个 "?" 号) 比如,这里匹配的是:至少两个数字,如果匹配到则不匹配 3、4等数字个数组合 \d{2,6}?

75430
  • 揭开正则表达式的神秘面纱

    正则表达式规则 # 1.1 普通字符 字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都是"普通字符"。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。...表达式 可匹配 \d 任意一个数字,0~9 中的任意一个 \w 任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个 \s 包括空格、制表符、换页符等空白字符的其中任意一个 ....表达式 可匹配 [ab5@] 匹配 "a" 或 "b" 或 "5" 或 "@" [^abc] 匹配 "a","b","c" 之外的任意一个字符 [f-k] 匹配 "f"~"k" 之间的任意一个字母 [^...其他通用规则 还有一些在各个正则表达式引擎之间比较通用的规则,在前面的讲解过程中没有提到。...表达式 可匹配 \S 匹配所有非空白字符("\s" 可匹配各个空白字符) \D 匹配所有的非数字字符 \W 匹配所有的字母、数字、下划线以外的字符 \B 匹配非单词边界,即左右两边都是 "\w" 范围或者左右两边都不是

    45630

    前端基础-正则语法(元字符)

    第2章 正则语法-元字符 正则表达式中的字符: 元字符:一些具有特殊含义的特殊符号。 普通字符:包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。...例如,“o{1,3}” 将匹配 “foooood” 中的前三个 o。‘o{0,1}’ 等价于 ‘o?’。请注意在逗号和两个数之间不能有空格。...匹配除换行符(\n、\r)之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用像"(.|\n)"的模式。 \d 匹配一个数字字符。等价于 [0-9]。 \D 匹配一个非数字字符。...\w 匹配一个字母、数字、下划线。等价于[A-Za-z0-9_]。 \W 匹配非(字母、数字、下划线)。等价于 [ ^A-Za-z0-9_]。 \s 匹配任何空白字符,包括空格、制表符、换页符等等。...(res);//["1234", "5678"] 6、转义字符(\) \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。

    71420

    正则表达式快速入门

    6月进入前端技术的学习,正则算是跳不过的一个坎了,这部分没有太多需要理解的内容,知道就是王道。...正则表达式(Regular Expression):在代码中常简写为regex,使用单个字符串来描述、匹配一系列符合某个句法规则。...匹配除了换行符以外的任意一个字符 {m} 匹配前一个内容,重复次数是m次 {m, } 匹配前一个内容,重复次数大于等于m次 {m, n} 匹配前一个内容,重复次数m次到n次 [] 匹配方括号中所包含的任意一个字符...其他的在巩固C#和Java的前提,了解一下与docker有关的Go语言即可。至于swift之类的,有空再说吧,最后借用闫恒敏大神的一首帅帅的打油诗,加强正则表达式的记忆。...\*等特殊符号) 倒杠后面跟小w, 数字字母来表示; (\w跟数字字母;\d跟数字) 倒杠后面跟小d, 只有数字来表示; 倒杠后面跟小a, 报警符号嘀一声; 倒杠后面跟小b, 单词分界或退格;

    1.4K50

    正则表达式常用语法总结

    正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本 普通字符 字母、数字、标点符号、键盘特殊符号等 定义字符集 [a-z] 匹配 26 个字母之一 [aeiou]...匹配 aeiou 这 5 个字符其中的某一个字符 [a-zA-Z] 匹配 26 个(大小写)字母中的某一个字母 [a-zA-Z0-9_-] 匹配(大小写)字母、数字、下划线、中横线 的某一个字符...匹配(大小写)字母、数字、下划线其中一个,与[a-zA-Z0-9_]效果相同 \W 匹配非字母、数字、下划线之一 \s 匹配一个空格...\S 匹配一个非空格 \b 匹配单词的开始或结束 限制字符集 {m} 匹配其前一单元严格出现 m 次 {m...匹配非 lsjd 之中的字符 [^a-f] 匹配非 a 到 f 之间的一个字符 [^定义字符集] 不给匹配定义字符集里边的信息 模式修正符 g 全文查找出现的所有 正在模式内容

    81830

    一看就懂:正则表达式

    根据上图,我们将密码设置规则可以描述为两个条件: (1)长度为6-16位; (2)密码中必须包含数字,大写字母,小写字母,特殊字符(指定字符); 现在假设我们不知道正则表达式,作为程序员的你,该如何去实现这样一个密码验证呢...普通字符:就是本身作为一个字符时,它不具有其他含义,像我们常用的大小写字母和数字。 元字符:就是除了本身作为一个字符外,他还可以表达其他含义(下图是部分元字符节选)。...111\D222:则表示111和222中间,必须包含一个非数字。 正则:\w \w 表示一个字母(大小写均可)、数字,或下划线。...如: 12\w45:则表示12和45中间必须是一个字母,数字,或下划线。 正则:\W \W 与 \w 相反,表示这个位置的字符既不是字母、数字,也不是下划线。...也就是:特殊符号(除下划线),或者空格等满足。 如: 12\w45:则表示12和45中间是一个非字母,非数字,或非下划线。

    2.7K20

    Python3 正则表达式

    1, \d 可以匹配一个数字 [0-9],用 \w 可以匹配一个字母或数字 [A-Z,a-z,0-9]。...3,要匹配变长的字符,在正则表达式中,* 匹配前一个字符 0 次或无限次,+ 匹配前一个字符 1 次或无限次,?...匹配前一个字符 0 次或一次,{m} 匹配前一个字符 m 次,{m,n}匹配前一个字符 m 至 n 次:      看一个复杂的正则表达式例子: \d{3}\s+\d{3,8}。...语法进阶        要做更精确地匹配,可以用 [] 表示范围,比如: [0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线; [0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串...,比如 ‘a100’, ‘0_Z’, ‘Py3000’ 等等; [a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是 Python

    48640

    正则表达式

    匹配除换行符(\n、\r)之外的任何单个字符 一般该元字符不单独用,配合*一起使用 * 前一个字符连续出现0次或多次 zl* 能匹配 "z" 以及 "zll",配合.使用要注意贪婪性 [] 字符集合,匹配所包含的任意一个字符...[xyz]' 可以匹配 "zls" 中的 'z'2.匹配数字[0-9]3.小写字母[a-z]4.大写字母[A-Z]5.大小写都匹配[a-z][A-z]或者[a-Z]6.在中括号中可以让特殊符号失去特殊含义...[^xyz]' 可以匹配 "zls" 中的 'ls'2.匹配数字和3.取出/etc/passwd第一列 \ \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符...等价于[^0-9] \w 匹配字母、数字、下划线 等价于'[A-Za-z0-9_]' \W 匹配非字母、数字、下划线 等价于'[^A-Za-z0-9_]' \s 匹配任何空白字符,包括空格、制表符、换页符等等...匹配前一个字符出现0次或1次 "do(es)?" 可以匹配 "do" 或 "does" 。? 等价于 {0,1} 注意:并不是所有的元字符,所有语言都支持。

    75410

    Python自动化测试-正则表达式解析

    对于正则表达式,第一眼时觉得完全没有规律可寻,而且全是一堆各种各样的特殊符号,完全不知所云。...匹配除换行符以外的任意字符 \ 将下一个字符标记为一个特殊字符‍ \w 匹配字母,数字,下划线或汉字 \s 匹配任意的空白符 \d 匹配数字,等价于[0-9] \b 匹配单词的开始或结束‍ ^ 匹配字符串的开始...$ 匹配字符串的结束 [abc] 字符组,匹配包含括号内元素的字符 2.反义字符 代码/语法 说明 \W 匹配任意不是字母,数字,下划线,汉字的字符 \S 匹配任意不是空白符的字符 \D 匹配任意非数字的字符...尝试匹配时,它会选定尽可能多的内容,如果 失败则回退一个字符,然后再次尝试回退的过程就叫做回溯,它会每次回退一个字符,直到找到匹配的内容或者没有字符可以回退。...[^\s@]+ 匹配网易邮箱:6-18个字符,只能包含字母、数字和下划线,且只能以字母开头 [a-zA-Z]\w{5,17}@(126|163)\.com 匹配qq邮箱:3-18个字符,只能包含字母、数字

    95230

    正则表达式

    正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 特殊符号: "....非打印字符 \b 单词边界,一个\w与\W之间的范围 \B 非单词边界 \w 匹配一个字母或数字 \W 与\w的意思相反 正则表达式不仅适用于ASCII字符还适用于unicode的数字字符。...匹配任意一个单字符(|n除外) ? 匹配前边的子表达式0次或者一次。也可以指明一个非贪婪限定符 \ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。...\_]可以匹配一个数字、字母或者下划线; [0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100','0_Z','Py3000'等等; [a-zA-Z\_][0-...9a-zA-Z\_]*可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是 Python 合法的变量; [a-zA-Z\_][0-9a-zA-Z\_]{0, 19}更精确地限制了变量的长度是

    71930

    Python自动化测试-正则表达式解析

    对于正则表达式,第一眼时觉得完全没有规律可寻,而且全是一堆各种各样的特殊符号,完全不知所云。...匹配除换行符以外的任意字符 \ 将下一个字符标记为一个特殊字符‍ \w 匹配字母,数字,下划线或汉字 \s 匹配任意的空白符 \d 匹配数字,等价于[0-9] \b 匹配单词的开始或结束‍ ^ 匹配字符串的开始...$ 匹配字符串的结束 [abc] 字符组,匹配包含括号内元素的字符 2.反义字符 代码/语法 说明 \W 匹配任意不是字母,数字,下划线,汉字的字符 \S 匹配任意不是空白符的字符 \D 匹配任意非数字的字符...尝试匹配时,它会选定尽可能多的内容,如果 失败则回退一个字符,然后再次尝试回退的过程就叫做回溯,它会每次回退一个字符,直到找到匹配的内容或者没有字符可以回退。...[^\s@]+ 匹配网易邮箱:6-18个字符,只能包含字母、数字和下划线,且只能以字母开头 [a-zA-Z]\w{5,17}@(126|163)\.com 匹配qq邮箱:3-18个字符,只能包含字母、

    1.1K30

    PHP的基本规则

    以外,其他情况下一律用空格分隔。 除非字符串中有特殊情况,否则,在程序以及HTML中不允许出现两个连续的空格。 任何情况下,PHP程序中的空白行应当不包含任何TAB或空格。...; A.2  命名约定 A.2.1  类 类名只允许有字母和数字字符,但不鼓励使用数字。...} A.2.5  变量 变量只包含数字和字母字符,不鼓励使用数字,不允许为下划线。...变量或程序名的长度必须在255个字符以内。 和保留字相同的名称不能使用。 A.2.6  常量 常量包含数字、字母和下划线,数字允许作为常量名。 常量名的所有字母必须大写。...和类一样,花括号从函数名的下一行开始,函数名与包括参数的圆括号中间没有空格。 不能使用全局函数。

    5.1K50

    正则表达式

    https://blog.csdn.net/CSDN___LYY/article/details/53104136 正则表达式 匹配的含义 一个一个往后找,匹配完一组后进行后续操作后,再找看还有没有匹配的组...    " 代表除\n以外的所有中的一个字符,例如:正则表达式“b.g”能匹配如下字符串:“big”、“bug”、“b g”,但是不匹配“buug”,“b..g”可以匹配“buug”。 ...]”可以匹配任何大小写字母,“[A-Za-z0-9]”可以匹配任何的大小写字母或者数字。 ...\s\S      ---所有的字符 \w   表示的是除了特殊符号以外的任意一个字符 ,数字,字母,下划线。。。...对于\本身来说,若想用\本身,则@“\\”或“\\\\”,因C#和表达式两层才可 其他 匹配的意思是若无开头和结尾的要求,那么需要检索的字符串中有一部分并且一群字母之间没有元字符则表示一个整 ^good

    85710

    编码篇 - 正则表达式及其相关

    代表一个字符和代表任意多个字符两个通配符。比如"name LIKE 'ac'",这表示name的值中包含ac则返回YES;"name LIKE '?...(3)还有\d用来表示任意的单个数字,\w表示任意一个字母或数字或者直接使用0-9的任意数字表示具体数字。而特殊符号?表示前一个字符为0或者1个。 (4)表达式的字符分为两类:值表达和修饰表达。...:^[A-Za-z0-9]+$ 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$ 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$...$ 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z...10,000”:^[1-9][0-9]*$ .这表示任意一个不以0开头的数字,但是,这也意味着一个字符”0″不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$ .一个0或者一个不以0开头的数字

    1K20

    iOS-正则表达式的简单使用

    它们分别表示没有或更多([0,+∞]取整),一次或更多([1,+∞]取整),没有或一次([0,1]取整)。...|b|c|d或者[abcd]); ^[a-zA-Z]:表示一个以字母开头的字符串; [0-9]a:表示a前有一位的数字; [a-zA-Z0-9]$:表示一个字符串以一个字母或数字结束。...(字母开头,允许5-16字节,允许字母数字下划线): ^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 匹配腾讯QQ号: [1-9][0-9]\{4,\} 匹配中国邮政编码:6位数字 [1-9]...下面给出正则表达式的元字符(来自百度百科) 正则表达式中的元字符 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“\n”匹配\n。“\n”匹配换行符。...例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。 ? 当该字符紧跟在任何一个其他限制符(*,+,?

    1.6K70

    js正则表达式梳理

    匹配任意除了换行符(回车键)之外的单个字符 \d 匹配数字 \D 匹配非数字 \w 匹配字母、数字、下划线 \W 匹配非字母、数字、下划线 \s 匹配空格 \S 匹配非空格 \b 匹配单词边界 \B 匹配非单词边界...n{0,} n+ 匹配任何包含至少一个n的字符串。n{1,} n? 匹配任何包含零个或一个n的字符串。{0,1} n{x} 匹配包含x个n的序列的字符串。...范围符 一个中括号就代表一个字符串,中括号的目的解视控制一个字符的范围。 中括号 说明 [abc] 查找一个括号之间的任何字符。...[A-Z] 查找一个任何从大写A到大写Z的字符。 [A-z] 查找一个字母(包含大小写和下划线)。 [[u4e00-u9fa5]] 查找一个汉字。 选择符 特殊符号:正则1|正则2。...符合或两边其中一个就可以匹配。

    5.2K10

    Shell正则表达式一览表

    WeiyiGeek.Linux-reg-grep脑图 Shell正则表达式详解 特殊符号类 元字符 描述 \ 将下一个字符标记符、或一个向后引用、或一个八进制转义符 [] 匹配[ abc ]中任意一个字符...匹配前面的子表达式零次或一次 (0-1) #当该字符紧跟在任何一个其他限制符(*,+,?...WeiyiGeek.匹配位置 元字符 # 数字与非数字 类匹配 \d 匹配一个数字字符 \D 匹配一个非数字字符 # 字母与非字母 类匹配,类似但不等价于“[A-Za-z0-9_]”,这里的"单词"字符使用...] 代表大写字母 [:digit:] 代表数字(Dec默认十进制) [:xdigit:] 代表16 进位的数字类型 [:punct:] 代表标点符号 [:graph:] 代表空白字符以外的其他 [:blank...WeiyiGeek.lower 特殊符号之分组 分组:正则表达式中的分组又称为子表达式,就是把一个正则表达式的全部或部分当做一个整体进行处理,分成一个或多个组 其中分组是使用“()”表示的,进行分组之后

    2.3K30

    Shell正则表达式一览表

    脑图 Shell正则表达式详解 特殊符号类 元字符 描述 \ 将下一个字符标记符、或一个向后引用、或一个八进制转义符 [] 匹配[ abc ]中任意一个字符 - 在[ ]括号里使用,表示字符范围 ^...匹配前面的子表达式零次或一次 (0-1) #当该字符紧跟在任何一个其他限制符(*,+,?...: WeiyiGeek.匹配位置 元字符 # 数字与非数字 类匹配 \d 匹配一个数字字符 \D 匹配一个非数字字符 # 字母与非字母 类匹配,类似但不等价于“[A-Za-z0-9_]”,这里的"...] 代表大写字母 [:digit:] 代表数字(Dec默认十进制) [:xdigit:] 代表16 进位的数字类型 [:punct:] 代表标点符号 [:graph:] 代表空白字符以外的其他 [:blank..."verb123never" | grep -oE '[[:alpha:]]' verb123never WeiyiGeek.lower 特殊符号之分组 分组:正则表达式中的分组又称为子表达式,就是把一个正则表达式的全部或部分当做一个整体进行处理

    74110

    正则表达式详解

    全部符号解释 字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。...其他的特殊符号,可以用在前面加上反斜杠,如反斜杠本身用\\表示,句号.用\.表示,以此类推。 7.2 字符簇 在INTERNET的程序中,正规表达式通常用来验证用户的输入。...(点,句号)在正规表达式中用来表示除了“新行”之外的所有字符。所以模式"^.5$"与任何两个字符的、以数字5结尾和以其他非“新行”字符开头的字符串匹配。模式"."...我们可以把模式扩展到更多的单词或数字: ^[a-zA-Z0-9_]{1,}$ //所有包含一个以上的字母、数字或下划线的字符串 ^[0-9]{1,}$ //所有的正数 ^\-{0,1}[0-9]{...这么看吧:与所有以一个可选的负号(\-{0,1})开头(^)、跟着0个或更多的数字([0-9]{0,})、和一个可选的小数点(\.{0,1})再跟上0个或多个数字([0-9]{0,}),并且没有其他任何东西

    1.4K10
    领券