我想忽略“regularexpression”,但也忽略空格和大写,所以如果有人键入“regular expression”或“reguLarExpression”,它仍然会匹配并忽略。你能帮忙吗?
^(?!(regularexpression)$)[a-zA-Z](?:[ ()'.\-a-zA-Z]*[a-zA-Z()])
我在 parsley.js 中使用这段代码:
data-parsley-pattern="^(?!(regularexpression)$)[a-zA-Z](?:[ ()'.\-a-zA-Z]*[a-zA-Z()])"
我想忽略一组单词,但它们没有空格或小写。因此,我需要像上面的示例一样涵盖变体。
最佳答案
根据您的模式判断,您希望整个字符串仅包含字母、空格、(
, )
、'
、 .
和 -
并且应该以字母开头,以字母或括号结尾。除此之外,如果字符串包含 regular expression
、regularexpression
、RegULar ExpressioN
等,您将尝试否定匹配。
在 parsley.js 中,您可以同时使用 string 和 regex literal 模式,即 data-parsley-pattern="\d+"
= data-parsley-pattern="/^\d+$/"
。请注意,字符串模式由框架自动锚定,而对于正则表达式文字符号,您需要添加 anchor 以确保整个字符串与正则表达式匹配。
由于 JavaScript 正则表达式不支持内联修饰符,您需要使用 *regex 文字符号,以 /
作为分隔符。
data-parsley-pattern
看起来像
data-parsley-pattern="/^(?!.*regular\s*expression)[a-zA-Z](?:[ ()'.a-zA-Z-]*[a-zA-Z()])?$/i"
参见 regex demo . 注意 /.../i
:i
是此处不区分大小写的标志。
要添加更多异常(exception),请继续添加 (?!.*my\s*new\s*phrase)
,或在单个前瞻中使用交替,(?!. *(?:regular\s*expression|my\s*new\s*phrase))
.此外,如果您需要将这些短语作为整个单词进行匹配,请使用单词边界,例如(?!.*\b(?:regular\s*expression|my\s*new\s*phrase)\b)
。
图案细节
^
- 字符串的开始(?!.*regular\s*expression)
- 如果有regular
+ 0 个或更多空格,然后是expression
,则不匹配在除换行符之外的任何 0+ 个字符之后尽可能多[a-zA-Z]
- 一个 ASCII 字母(?:[ ()'.a-zA-Z-]*[a-zA-Z()])?
- 一个可选的序列[ ()'.a-zA-Z-]*
- 0+ ASCII 字母,空格,(
,)
,'
,.
或-
[a-zA-Z()]
- ASCII 字母或(
或)
$
- 字符串结尾。
JS 演示:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="http://cdn.jsdelivr.net/parsleyjs/2.0.0-rc5/parsley.js"></script>
<form id="parsley" data-parsley-validate>
<input type="text" name="the_name" id="the_id" data-parsley-pattern="/^(?!.*regular\s*expression)[a-zA-Z](?:[ ()'.a-zA-Z-]*[a-zA-Z()])?$/i" required>
<input type="submit" />
</form>
关于javascript - 忽略单词并删除区分大小写和空格以匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57794710/