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

使用正则表达式测试字符串匹配,仅接受1和点,但不接受11

基础概念

正则表达式(Regular Expression)是一种用于描述字符串模式的强大工具。它广泛应用于文本处理、数据验证、搜索和替换等场景。正则表达式通过定义一系列字符和特殊符号来表示字符串的模式。

相关优势

  1. 灵活性:正则表达式可以精确地描述复杂的字符串模式。
  2. 高效性:正则表达式引擎经过优化,能够快速匹配大量文本。
  3. 通用性:几乎所有的编程语言都支持正则表达式。

类型

正则表达式有多种类型,包括:

  • 简单匹配:如 abc 匹配字符串 "abc"。
  • 字符类:如 [0-9] 匹配任意数字。
  • 量词:如 * 表示零个或多个,+ 表示一个或多个。
  • 分组和捕获:如 (abc) 捕获匹配的子字符串。
  • 锚点:如 ^ 表示字符串开头,$ 表示字符串结尾。

应用场景

正则表达式广泛应用于:

  • 数据验证:如验证电子邮件地址、电话号码等。
  • 文本搜索:如查找包含特定模式的文本。
  • 数据提取:如从日志文件中提取特定信息。

具体问题

问题描述:使用正则表达式测试字符串匹配,仅接受 "1" 和 ".",但不接受 "11"。

解决方案

为了实现这个需求,可以使用正则表达式来匹配符合条件的字符串。具体来说,我们需要确保字符串中只包含 "1" 和 ".",并且不能出现连续的 "1"。

以下是一个符合要求的正则表达式:

代码语言:txt
复制
^(?!.*11)(\.\d+|\d+\.|\d+)$

解释

  • ^$ 分别表示字符串的开头和结尾,确保整个字符串都符合模式。
  • (?!.*11) 是一个负向前瞻断言,确保字符串中不包含连续的 "1"。
  • (\.\d+|\d+\.|\d+) 是一个分组,匹配以下三种情况之一:
    • \.\d+:以 "." 开头,后面跟着一个或多个数字。
    • \d+\.:以一个或多个数字开头,后面跟着一个 "."。
    • \d+:一个或多个数字。

示例代码

以下是一个使用 JavaScript 的示例代码,演示如何使用上述正则表达式进行字符串匹配:

代码语言:txt
复制
const regex = /^(?!.*11)(\.\d+|\d+\.|\d+)$/;

console.log(regex.test("1"));       // true
console.log(regex.test("1."));      // true
console.log(regex.test(".1"));      // true
console.log(regex.test("1.1"));     // false
console.log(regex.test("11"));      // false
console.log(regex.test("1.1.1"));   // false
console.log(regex.test("11."));     // false
console.log(regex.test(".11"));     // false

参考链接

通过上述正则表达式和示例代码,可以有效地测试字符串是否符合仅包含 "1" 和 ".",但不包含 "11" 的要求。

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

相关·内容

笨办法学 Python · 续 练习 32:扫描器

它通过应用一系列正则表达式来做到这一,这些正则表达式匹配” Python 理解的每个可能的输入。练习 31 中,你会记得一个正则表达式是一种方式,告诉 Python 要匹配接受什么字符序列。...API 应具有以下功能: __init__ 使用类似的元组列表(没有re.compile)来配置扫描器。 scan 接受一个字符串并执行扫描,创建一个记录列表以便以后使用。...你也应该创建通用的Token类来代替我使用的tuple。它应该能够跟踪发现的记号,匹配字符串、原始字符串匹配位置的开头末尾。...研究性学习 安装pytest-cov库,并使用它来测量自动化测试的覆盖率。 使用pytest-cov的结果来改进自动化测试。...有许多工具使用这个事实来接受扫描器定义,将每个小的正则表达式转换为 FSM,然后将它们组合来产生大段代码,可以可靠地匹配所有记号。

52220

笨办法学 Python · 续 练习 31:正则表达式

一旦你明白了这八个符号正则表达式的限制,你就会看到它们根本不可怕。 我打算让你记忆更多东西,使你的的大脑为讨论做好准备。 ^ 锚定字符串开头。只有字符串刚好位于开头,它才会匹配。...$ 锚定字符串末尾。只有字符串到达了末尾,它才会匹配。 . 任何单个字符。接受任何单个字符的输入。 ? 正则表达式的之前的部分是可选的,所以A?的意思是可选的字符A。...*类似,但是只接受一个或多个这种字符。A+会匹配"AAAAAAA",但不是"BQEFT"。 [X-Y] X到Y的字符范围,接受任何范围中列出的字符串。[A-Z]表示所有大写英文字母。...记住这些符号后,请查看以下正则表达式并将其翻译成中文,并使用 Python re库来尝试列出的字符串,或你可以想到的任何其他字符串。 ".*BC?...挑战练习 挑战是尝试使用你的 FSM 模块来实现一个简单的正则表达式,至少执行三个操作。这将是一个困难的挑战,但使用 Python re库来帮助你规划测试正则表达式的实现。

41520
  • 字符串正则表达式

    1、什么是正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个 “规则字符串” ,这个 “规则字符串” 用来表达对字符串的一种过滤逻辑。...例如, “er\b” 可以匹配 “never” 中的 “er” ,但不匹配 “verb” 中的 “er”;“\b1_” 可以匹配1_23” 中的 “1_”,但不匹配 “21_3” 中的 “1_”...9、贪婪与懒惰 当正则表达式中包含能接受重复的限定符时,通常的行为是匹配尽可能多的字符。以这个表达式为例:b.*c ,它将会匹配最长的以 b 开始,以 c 结束的字符串。...的含义,使它与每一个字符匹配(包括换行符 \n ) ExplicitCapture 捕获已被显式命名的组。 的含义,使它们分别在任意一行的行首行尾匹配,而不仅仅在整个字符串的开头结尾匹配。...的含义,使它与每一个字符匹配(包括换行符 \n )ExplicitCapture捕获已被显式命名的组。 一个经常被问到的问题是:是不是只能同时使用多行模式单行模式中的一种? 答案是:不是。

    3.3K20

    Perl快速入门学习

    F, And $celsius ℃\n"; 执行结果: perl demo1.pl 86 F, And 30 ℃ 注意事项: (1)Perl符号=~ / = \=\= 之间的差别,等于 \=\=测试两个数字是否相等.../待搜索的目标字符串。...=~ m/regularExpression/i #来判断一个正则表示是是否能匹配某个字符串; #整个测试语句作为一个单元返回boolean类型返回TRUE或者FALSE; m #表示进行整治match.../usr/bin/perl #function:验证Perl正则表达式进行匹配 #方式1:接受用户输入并且判断校验输入 print "Please Enter a number(Eg:1024):";...}gix 补充说明: 为什么有时候Perl在使用正则匹配的需要对$@需要转义 $符号既可以作为字符串结束字符,又可以在Perl中作为标记变量; @情况与之类似,Perl用@表示数组名,在Perl

    2.4K20

    JavaScript 权威指南第七版(GPT 重译)(四)

    例如,+ 匹配前一个模式的一个或多个出现。 表 11-3 总结了重复语法。 表 11-3. 正则表达式重复字符 字符 含义 {n,m} 匹配前一个项目至少 n 次但不超过 m 次。...[⁴] 元素如\b不指定要在匹配字符串使用的任何字符;但它们指定的是合法的匹配位置。有时这些元素被称为正则表达式,因为它们将模式锚定到搜索字符串中的特定位置。...它匹配“JavaBeans”但不匹配“Javanese”,它匹配“JavaScrip”但不匹配“JavaScript”或“JavaScripter”。表 11-5 总结了正则表达式。...表 11-5. 正则表达式锚点字符 字符 含义 ^ 匹配字符串的开头或者在使用m标志时,匹配行的开头。 $ 匹配字符串的结尾,并且在使用m标志时,匹配行的结尾。 \b 匹配单词边界。...m m标志指定匹配应该在“多行”模式下进行。它表示正则表达式将与多行字符串一起使用,并且^$锚应该匹配字符串的开头结尾,以及字符串中各行的开头结尾。

    42110

    学习正则表达式就用它,还有在线练习网站

    一个正则表达式是在一个主体字符串中从左到右匹配字符串时的一种样式. "Regular expression"这个词比较拗口, 我们常使用缩写的术语"regex"或"regexp"....正则表达式可以从一个基础字符串中根据一定的匹配模式替换文本中的字符串、验证表单、提取字符串等等。...以上的正则表达式可以接受 john_doe, jo-hn_doe, john12_as....但不匹配Jo, 因为它包含了大写的字母而且太短了 虽说正则表达式很重要,但是上手也不是那么简单,最近,猿妹在Github上找到一篇简单的正则表达式教程,覆盖范围极广,几乎你实际中用得到几乎都可以在里面找到...值得一提的是,每个知识都配有在线练习。(在线练习地址:https://regex101.com/) ? 总而言之,这份资料十分适合正则表达式学习,如果你对正则表达式感兴趣,不妨试试它。

    2.4K20

    正则表达式来了,Excel中的正则表达式匹配示例

    下面,介绍几个为演示目的而创建的正则表达式匹配示例。我们不能保证模式能够完美地处理真实工作表中更大范围的输入数据。在运用到正式工作表之前,确保根据需要测试调整这些示例正则表达式。...要允许空格,使用[-\.]而不是[-\.\s]。 正则表达式匹配字符 若要查找不包含特定字符的字符串,可以使用与括号中以外的任何内容匹配的否定字符类[^]。...对于多行字符串,^$字符匹配每行的开头结尾,而不是输入字符串的开头结尾,因此正则表达式只搜索第一行。 要匹配不以特定文本开头的字符串使用正则表达式,如^(?!lemons).*$。...记住\w匹配任何字母、数字或下划线,我们得到以下正则表达式:[\w\.\-]+ 域名可能包括大小写字母、数字、连字符(但不在第一个或最后一个位置)(在子域的情况下)。...使用标准的COUNTIF公式可以很容易地做到这一: =COUNTIF(B5:B9, TRUE) 图11 如果不想要辅助列,可以吗?没问题。

    20.8K30

    Perl快速入门学习

    F, And $celsius ℃\n"; 执行结果: perl demo1.pl 86 F, And 30 ℃ 注意事项: (1)Perl符号=~ / = \=\= 之间的差别,等于 \=\=测试两个数字是否相等.../待搜索的目标字符串。...=~ m/regularExpression/i #来判断一个正则表示是是否能匹配某个字符串; #整个测试语句作为一个单元返回boolean类型返回TRUE或者FALSE; m #表示进行整治match.../usr/bin/perl #function:验证Perl正则表达式进行匹配 #方式1:接受用户输入并且判断校验输入 print "Please Enter a number(Eg:1024):";...}gix 补充说明: 为什么有时候Perl在使用正则匹配的需要对$@需要转义 $符号既可以作为字符串结束字符,又可以在Perl中作为标记变量; @情况与之类似,Perl用@表示数组名,在Perl

    1.3K20

    grafana loki轻量级日志收集系统

    (vs ELK技) 通过存储压缩非结构化日志索引元数据,Loki 操作起来会更简单,更省成本 通过使用与 Prometheus 相同的标签记录流对日志进行索引分组,使得日志的扩展操作效率更高 特别适合储存...添加 Loki 配置 Loki 地址 url 填写正确地址 点击 Save & test 测试并保存 使用 Loki 切换到 grafana 左侧区域的 Explore 数据库源选择 Loki 点击...= 不相等 =~ 正则表达式匹配 !~ 不匹配正则表达式 Loki 过滤器 搜索表达式 搜索表达式可以只是文本或正则表达式 表达式接受RE2语法 匹配项区分大小写 过滤器类型 |= 行包含字符串。 !...= 行不包含字符串。 |~ 行匹配正则表达式。 !...*, 表示所有,比如 *.log 多个日志目录可以使用 {path1,path2,…pathN} 区分 不同的 job 使用 targets 区分 - targets: - localhost

    1.1K10

    Rust 中的解析器组合因子(Parser combinators)

    正则表达式,不过是有限状态自动机的编码。 箭头最上方的项,是关于字母字符的正则表达式。实心圆表示状态,如 q1 表示“接受状态”。箭头,则表示状态转换。...经典的子是,正则表达式例不接受 “ab”、“aabb”、“aaabbb”……类似地,不能用正则表达式解决插入语的匹配难题,而需要使用最简单的堆栈机器模型。 堆栈自动机,可以同时处于几种状态。...(@\* 将字符 '(' 与任何堆栈状态匹配当堆栈为空时,ε@ε 在自动机到达 p 状态时即刻匹配。 因此,正则表达式远远不能提供足够的工具,以用来处理上下文无关语法。...\-]*)$ 许多人都能从表面上理解这个正则表达式。似乎,这个正则表达式与链接有关,但即使我们求助于正则的自动化诠释(译注:一个正则表达式解释测试站点),事情也没有变得更清楚。...正则表示法不“将数据解析为数据结构”,他们只接受或拒绝字符串。因此,需要对它们的输出,进行额外的后续处理。 正则表达式,有着内在的问题。对我们来说,这意味着只能使用简短的表达。

    1.8K10

    java正则表达式解析「建议收藏」

    正则表达式”到用时方恨少! 学习正则表达式,我觉得还是要循循渐进,由易到难,一深入……(本人也在学习中这里提供个人理解思路,以及一些大神们的独到讲解。。。。。。)...看红色曲线,这个“规则字符串”用来表达对字符串(这里的字符串是我们自己的)的一种过滤逻辑。 正则表达式的目的: 给定一个正则表达式另一个字符串,我们可以达到如下的目的: 1....我直接上代码:(匹配实现替换功能) String str ="13023629739"; //该方法接受一个正则表达式作为它的第一个参数。...该方法接受一个正则表达式作为它的第一个参数。 Matcher 类: Matcher 对象是对输入字符串进行解释匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。...允许在正则表达式使用 ASCII 代码。 \num 匹配 num,此处的 num 是一个正整数。到捕获匹配的反向引用。例如,”(.)\1匹配两个连续的相同字符。

    1.2K40

    Python 自动化指南(繁琐工作自动化)第二版:七、使用正则表达式的模式匹配

    我推荐pythex.org的测试人员。 使用正则表达式的更多模式匹配 现在您已经知道了使用 Python 创建和查找正则表达式对象的基本步骤,您已经准备好尝试一些更强大的模式匹配功能了。...要匹配一个实际的,用反斜杠\.对该进行转义。 用点号匹配一切东西 有时候你会想匹配一切任何东西。...要以一种非贪婪的方式匹配任何所有文本,使用、星问号(.*?)。大括号一样,问号告诉 Python 以非贪婪的方式进行匹配。...为此,您可以使用正则表达式Agent (\w)\w*并将r'\1****'作为第一个参数传递给sub()。该字符串中的\1将被组1匹配的任何文本替换,即正则表达式的(\w)组。...强密码被定义为长度至少为八个字符,包含大写小写字符,并且至少有一位数字。您可能需要针对多个正则表达式模式测试字符串,以验证其强度。

    6.6K40

    正则表达式快速入门

    常用的程序设计语言都支持正则表达式,比如 C++11 也将正则表达式纳入标准,Perl、Python、PHP、Javascript、Ruby 等脚本语言都内置了强大的正则表达式处理引擎,Java、C#、...^匹配字符串的开始位置$匹配字符串的结束位置*匹配前面的子表达式零次或多次(>=0次)zo* 匹配 z 或 zo 或 zoo+匹配前面的子表达式一次或多次(>=1次)zo+ 匹配 zo 或 zoo,但不匹配...er\B能匹配 verb 中的 er,但不匹配 border 中的 er\匹配单词 word 的开始()位置,等价于 \bword\b正则表达式\能够匹配字符串...懒惰与贪婪匹配正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。例如表达式 a.*b,它将会匹配最长的以 a 开始,以 b 结束的字符串。..., {n}, {n,}, {n,m}限定符p3^, $, \任何元字符、任何字符定位字符p4|逻辑或 常用示例 匹配身份证号码。

    1.2K20

    Python正则表达式指南

    得益于这一,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。...可选值有: re.I(re.IGNORECASE): 忽略大小写(括号内是完整写法,下同) M(MULTILINE): 多行模式,改变’^'’$'的行为(参见上图) S(DOTALL): 任意匹配模式...# m.start(2): 6 # m.end(2): 11 # m.span(2): (6, 11) # m.expand(r'\2 \1\3'): world hello! 2.3....当repl是一个字符串时,可以使用\id或\g、\g引用分组,但不使用编号0。...当repl是一个方法时,这个方法应当只接受一个参数(Match对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组)。 count用于指定最多替换次数,不指定时全部替换。

    97870

    python正则表达式

    给定一个正则表达式另一个字符串,我们可以达到如下的目的: 给定的字符串是否符合正则表达式的过滤逻辑(“匹配”) 通过正则表达式,从文本字符串中获取到我们想要的特定部分(“过滤”) ?...有一需要特别注意的是,正则表达式使用对特殊字符进行转义,所以如果我们要使用原始字符串,只需要一个r前缀,示例: r'chuanzhiboke\t\....,它的一般使用形式如下: match(string[, pos[, endpos]]) 其中,string是待匹配字符串,posendpos是可选参数,指定字符串的起始终点位置,默认值分别是0len...,repl还可以使用id的形式来引用过分组,但不使用编号0; 如果repl是函数,这个方法应当只接受一个参数(Match对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组)。...参考 正则表达式测试网址 廖雪峰-正则表达式 Python正则匹配中文与编码总结

    1.1K61

    Python爬虫(十)_正则表达式

    给定一个正则表达式另一个字符串,我们可以达到如下的目的: 给定的字符串是否符合正则表达式的过滤逻辑(“匹配”) 通过正则表达式,从文本字符串中获取到我们想要的特定部分(“过滤”) ?...有一需要特别注意的是,正则表达式使用对特殊字符进行转义,所以如果我们要使用原始字符串,只需要一个r前缀,示例: r'chuanzhiboke\t\....,它的一般使用形式如下: match(string[, pos[, endpos]]) 其中,string是待匹配字符串,posendpos是可选参数,指定字符串的起始终点位置,默认值分别是0len...,repl还可以使用id的形式来引用过分组,但不使用编号0; 如果repl是函数,这个方法应当只接受一个参数(Match对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组)。...参考 正则表达式测试网址 廖雪峰-正则表达式 Python正则匹配中文与编码总结

    1K60

    Python学习笔记之Python正则表达式指南

    得益于这一,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。...假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\\\":前两个后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。...# m.start(2): 6 # m.end(2): 11 # m.span(2): (6, 11) # m.expand(r'\2 \1\3'): world hello! 2.3....当repl是一个字符串时,可以使用\id或\g、\g引用分组,但不使用编号0。...当repl是一个方法时,这个方法应当只接受一个参数(Match对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组)。

    57910

    正则表达式详解

    ^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。 { 标记限定符表达式的开始。要匹配 {,请使用 \{。...使用 (?= ?!) 定义正向前查找组,它指定组中的子模式位置必须匹配。但是,匹配正向前查找组的字符串部分可能匹配正则表达式中的剩余模式。例如,由于 (?...D(PCRE_DOLLAR_ENDONLY)   如果设定了此修正符,模式中的美元元字符匹配目标字符串的结尾。...(,句号)在正规表达式中用来表示除了“新行”之外的所有字符。所以模式"^.5$"与任何两个字符的、以数字5结尾以其他非“新行”字符开头的字符串匹配。模式"."...[1-9])|((1|2)[0-9])|30|31)$ 15、钱的输入格式: 有四种钱的表示形式我们可以接受:"10000.00" "10,000.00", 没有 "分" 的 "10000

    1.4K10
    领券