首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么regex在javascript中工作,而不是以HTML5模式工作

为什么regex在javascript中工作,而不是以HTML5模式工作
EN

Stack Overflow用户
提问于 2022-08-16 01:47:17
回答 2查看 55关注 0票数 -1

下面的JS regex正在按预期工作

代码语言:javascript
运行
AI代码解释
复制
/^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d+)\)?)[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$/i

但是,当我使用它作为HTML 5模式时,我得到了以下错误:

代码语言:javascript
运行
AI代码解释
复制
Pattern attribute value /^(?:(?:(?(?:00|+)([1-4]dd|[1-9]d+))?)[-. \/]?)?((?:(?d{1,})?[-. \/]?){0,})(?:[-. \/]?(?:#|ext.?|extension|x)[-. \/]?(d+))?$/i is not a valid regular expression: Uncaught SyntaxError: Invalid regular expression: //^(?:(?:(?(?:00|+)([1-4]dd|[1-9]d+))?)[-. \/]?)?((?:(?d{1,})?[-. \/]?){0,})(?:[-. \/]?(?:#|ext.?|extension|x)[-. \/]?(d+))?$/i/: Invalid group

浏览器告诉我“未登录的SyntaxError:无效的正则表达式。无效的组”

任何帮助都将是非常感谢的,因为regex不是我真正的力量。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-16 10:26:30

regex和regex字符串是两种不同的东西。

Regex示例:

代码语言:javascript
运行
AI代码解释
复制
/[a-zA-Z\d]+/.test('abc123')

等效的正则表达式字符串示例:

代码语言:javascript
运行
AI代码解释
复制
new RegExp('[a-zA-Z\\d]+').test('abc123')

字符串中的反斜杠转义后面的字符。对于许多字符来说,它是不操作的,就像在'\d'字符串中一样,这相当于'd'。因此,您需要指定一个双反斜杠来获取可以在正则字符串中使用的\d,以表示一个数字。

在HTML5中使用示例验证输入:

代码语言:javascript
运行
AI代码解释
复制
<input type="text" name="uname" pattern="[a-zA-Z\d]+" minlength="4" maxlength="10" />

因此,在您的情况下,请确保在regex字符串中转义反斜杠:

代码语言:javascript
运行
AI代码解释
复制
"^(?:(?:\\(?(?:00|\\+)...

在pattern属性中,您不能指定修饰符i来忽略大小写,例如,您需要调整regex字符串本身,使其不区分大小写。

HTML属性上的文档:https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern

票数 0
EN

Stack Overflow用户

发布于 2022-08-16 02:51:20

从示例复制的JS Regex输入:

代码语言:javascript
运行
AI代码解释
复制
/^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d+)\)?)[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$/i

从示例复制的HTML5 Regex错误输出:

代码语言:javascript
运行
AI代码解释
复制
//^(?:(?:(?(?:00|+)([1-4]dd|[1-9]d+))?)[-. \/]?)?((?:(?d{1,})?[-. \/]?){0,})(?:[-. \/]?(?:#|ext.?|extension|x)[-. \/]?(d+))?$/i/

从外观上看,javascript正在读取反斜杠,就好像它们在转义字符一样。

从JS示例到HTML错误:

  • \d\d变成dd

没有识别转义字符的任何一个反斜杠,如d,另一个反斜杠等,都会被删除。

如果查看输入和结果错误,还会有更多的示例。

如果使用JS将此模式作为字符串传递给html DOM,则需要转义反斜杠。每当您的模式需要反斜杠时,您需要将其中的两个放在字符串中。第一个反斜杠告诉解释器,第二个反斜杠是文本的一部分,而不是转义序列。如果模式存储在标记中,就像您的示例一样,并且使用JS访问它,则仍然希望通过用\替换它们来转义您的\\

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73372011

复制
相关文章
【R语言】因子在临床分组中的应用
我们还是以TCGA数据中的CHOL(胆管癌)这套数据为例。关于这套临床数据的下载可以参考
生信交流平台
2022/09/21
3.4K0
【R语言】因子在临床分组中的应用
mysql实现类似rownumber()的效果
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143701.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/01
7260
【R语言】R中的因子(factor)
R中的因子用于存储不同类别的数据,可以用来对数据进行分组,例如人的性别有男和女两个类别,根据年龄可以将人分为未成年人和成年人,考试成绩可以分为优,良,中,差。
生信交流平台
2022/09/21
3.4K0
【R语言】R中的因子(factor)
R语言有RStan的多维验证性因子分析(CFA)
如果您已经熟悉RStan,那么您需要组合的基本概念是具有相关随机斜率和异方差误差的标准多级模型。
拓端
2020/11/11
8330
判断是否有重复的数字
import java.util.Scanner; import java.util.HashMap; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int m=input.nextInt(); HashMap map=new HashMap(); while(m-->0) { int tmp=input.nextInt(); if(
葆宁
2019/04/18
3.5K0
判断是否有重复的数字
[1188]shell中如何判断脚本是否有带参数
参考:https://jingyan.baidu.com/article/f7ff0bfc32200e2e26bb13df.html
周小董
2023/10/10
4650
WPF实现类似ChatGPT的逐字打印效果
方法一:根据字符串长度n,添加n个关键帧DiscreteStringKeyFrame,第一帧的Value为字符串的第一个字符,紧接着的关键帧都比上一帧的Value多一个字符,直到最后一帧的Value是完整的目标字符串。实现效果如下所示:
郑子铭
2023/08/30
2940
WPF实现类似ChatGPT的逐字打印效果
WPF实现类似ChatGPT的逐字打印效果
前一段时间ChatGPT类的应用十分火爆,这类应用在回答用户的问题时逐字打印输出,像极了真人打字回复消息。出于对这个效果的兴趣,决定用WPF模拟这个效果。
czwy
2023/10/22
2790
WPF实现类似ChatGPT的逐字打印效果
aceEditor实现类似于codepen的效果
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
牛老师讲GIS
2019/11/21
8050
动态调用类中的方法(无)(有)参数
1、Type类,方法用Invoke调用的时候就 使用null:表示该方法是无参数的
静心物语313
2020/03/24
2.7K0
判断链表中是否有环
操作一:定义了两个变量来记录,A一个一次走一步,B一个一次走两步,如果有环B必然会追上A。如果无环B必然会先遍历完。
忧愁的chafry
2022/10/30
1.5K0
判断链表中是否有环
有一个本地文件的路径或者文件的名字,计算文件的大小
有一个本地文件的路径或者文件的名字,计算文件的大小。 url 为 本地文件的路径或者文件的名字。 注释的方法要捕捉异常。 public long getSize(String url) { File f= new File(url); if (f.exists() && f.isFile()){ return f.length(); //文件的大小 } // FileInputStream fis= null;
103style
2022/12/19
4770
在安卓5.0以上实现点击波纹效果
本文介绍的是Android5.0中其中一个炫酷的效果,点击水波纹扩散效果(Ripple Effect).
用户4458175
2020/02/12
8960
构造有参数的线程ParameterizedThreadStart
构造有参数的线程就得需要用到ParameterizedThreadStart,查看从元数据可以看出ParameterizedThreadStart是一个委托,参数类型必须是Object类型。
全栈程序员站长
2022/09/14
4270
构造有参数的线程ParameterizedThreadStart
在制造行业中,ERP是否有更大是施展空间
  其实,在很多企业认为自己已经实现智能制造的时候,提出工业4.0的德国也仅仅是将其作为一个发展的目标。中国制造的总体水平基本在中等的水平,甚至更低,智能制造就更是遥不可及的。
明象ERP
2019/03/01
6340
原生 js 实现一个有动画效果的进度条插件 progress
项目地址:https://github.com/biaochenxuying/progress
夜尽天明
2019/06/03
2.5K0
Golang实现类似Scan或者Scanf功能
package main import ( _"errors" "fmt" "io" "os" "syscall" "time" "bytes" _"os/exec" "github.com/docker/docker/pkg/term" ) func main() { Stdin() } func Stdin() { var in io
李海彬
2018/03/26
8960
leetcode 217 Contains Duplicate 数组中是否有重复的数字
Contains Duplicate Total Accepted: 26477 Total Submissions: 73478 My Submissions
流川疯
2019/01/18
1.1K0
R语言分位数回归预测筛选有上升潜力的股票
现在,分位数回归已被确立为重要的计量经济学工具。与均值回归(OLS)不同,目标不是给定x的均值,而是给定x的一些分位数。您可以使用它来查找具有良好上升潜力的股票。您可能会认为这与股票的beta有关,但是beta与OLS相关,并且是对称的。如果市场出现上涨,高beta股票将获得上行波动的收益,但对称地,当市场下跌时,您可能会遭受巨额亏损。
拓端
2021/01/13
4610
Golang实现类似Scan或者Scanf功能
package main import ( _"errors" "fmt" "io" "os" "syscall" "time" "bytes" _"os/exec" "github.com/docker/docker/pkg/term" ) func main() { Stdin() } func Stdin() { var in io
李海彬
2018/03/20
7900

相似问题

利用Swagger生成Netflix伪码

10

如何在OpenApi中添加basepath,以便使用maven自动生成basepath?

120

如何为Springfox Swagger2.0更改basePath

40

如何在swagger2.0中定义basePath

10

用ITuple生成伪码错误

33
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文