我正在使用javascript正则表达式进行一些数据验证并指定我要接受的字符(我想接受任何字母数字字符、空格和以下!
var value = userInput;
var pattern = /[^A-z0-9 "!&,'\-]/;
if(patt.test(value) == true) then do something
它工作得很好,排除了我不希望用户输入的字母,除了方括号和插入符号。从我读过的所有javascript正则表达式教程中,它们都是特殊字符-括号表示它们之间的任何字符,在本例中,插入符号表示不在方括号之间的任何角色。我在这里和谷歌上搜索了这些字符为什么也被接受,但找不到解释。
那么谁能帮忙,为什么我的输入接受方括号和插入符号?
我不知道你想要什么,但我不认为你当前的正则表达式做你认为它做的:
它试图找到一个字符不是A-z0-9"!
另外,我什至不确定
A-z
匹配什么。它要么是 a-z
要么是 a-z
。
所以您当前的regexp匹配像< code >“.”这样的字符串。
和< code >“嗨。”但不是< code >“嗨”
您的正则表达式与您所说的不一致:
我想接受任何字母数字字符、空格和以下字符!
如果只接受这些字符,则需要删除插入符号:
var pattern = /^[A-Za-z0-9 "!&,'\\-]+$/;
注意事项:
>
A-z
还包括字符:
[\]^_`
使用A-Za-z
或使用i
修饰符仅匹配字母:
var pattern = /^[a-z0-9 "!&,'\\-]+$/i;
< code>\-只是字符< code>-,因为反斜杠将充当转义的特殊字符。使用< code>\\允许反斜杠。
^
和< code>$是锚点,用于匹配字符串的开头和结尾。这确保了整个字符串与正则表达式匹配。
在字符类之后用于匹配多个字符。
如果您的意思是希望匹配您接受的字符以外的字符,并使用该字符来防止用户输入“禁止”字符,则上面的第一个注释描述了您的问题。使用A-Za-z
而不是A-z
(第二个注释也是相关的)。
原因是您使用的是A-z而不是A-Za-z。介于Z(0x5a)和a(0x61)之间的ascii范围包括方括号、插入符号、反引号和下划线。
我需要通过不在括号中的管道拆分文本。这是示例文本 我在这里找到了这个/\ |(?![^{]*})/g:regex,提取字符串,不要在两个括号之间 现在当我想用管子分割这部分字符串时 它还选择杰森、玛丽亚和圣诞老人之间的管道,因为它们后面有一个开口支架。如果正则表达式不在任何括号中,如何将其更改为仅匹配管道。 测试字符串: 应该返回 . 应该返回
我正在与下面的正则表达式作斗争 为什么结果中包含方括号?
本文向大家介绍使用JS正则表达式 替换括号,尖括号等,包括了使用JS正则表达式 替换括号,尖括号等的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇使用JS正则表达式 替换括号,尖括号等就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
我不知道如何表达这个问题的标题,但想象一下我有以下字符串: 我想要一个正则表达式,它允许我获得和 我目前拥有的正则表达式是。 这个正则表达式的问题是,它得到了和。这是因为它与的括号匹配。但我需要一个正则表达式,它忽略4的括号,只匹配外部的,如果这有意义的话。 编辑:为了更深入地了解这个问题,这正是我所期望的字符串类型:
问题内容: 在发布此内容之前,我仔细阅读了相关问题,并且无法修改任何相关答案以使用我的方法(不擅长使用正则表达式)。 基本上,这是我现有的行: 它们都匹配和之间包含的字符串。我需要正则表达式忽略它们之间包含的转义引号。因此,之间的数据将被忽略,而之间的数据将被忽略。 任何帮助将不胜感激。 问题答案: 对于大多数字符串,您需要允许转义 任何内容 (而不仅仅是转义引号)。例如,你很可能需要允许转义字符
问题内容: 匹配字符串中的’(’的正则表达式是什么? 以下是场景: 我有一串 我想使用正则表达式拆分字符串。为此,我正在使用 但是我收到以下异常。 转义似乎不起作用。 问题答案: 两种选择: 首先,你可以使用转义 回 斜线- 另外,由于它是单个字符,因此您可以将其放入不需要转义的字符类中-