gpt4 book ai didi

javascript - 为什么\W 元字符在此 Javascript 正则表达式中无法正常工作

转载 作者:行者123 更新时间:2023-11-29 19:26:15 24 4
gpt4 key购买 nike

你好,我无法理解这个正则表达式。

'^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[\d\W]).*$'

它应该匹配 ZXC!"#zxc123,它在在线 JS 正则表达式测试器中匹配,但是当我在我正在处理的应用程序中尝试它时,它不会匹配。它似乎需要字母 W,我假设它来自非单词选择器\W。

所以情况是,它可以在在线测试器中运行,但不适用于实际的 JS。

我已经在 Fiddle 上设置了一个例子,所以你可以自己看看。

$(document).ready(function(){
var inputField = $('#regex');

inputField.on('input', function(e){
var inputValue = $(e.currentTarget).val();

MatchString(inputValue);
});


function MatchString(str){
var matches = str.match('^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[\d\W]).*$');

if(matches){
$('#output').text('Matches')
}
else{
$('#output').text('Not matching')
}
}

MatchString(inputField.val());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="regex" value='ZXC!"#zxc!"#'/>
<p id="output"></p>

我已经测试了正则表达式 on regex101

我真的希望得到一个解释,因为这对我来说似乎很奇怪。提前致谢

最佳答案

这是因为您的语法不适合正则表达式。在 JS 中,正则表达式应包装为 /.../,其中 / 称为正则表达式分隔符。

您的正则表达式也可以这样重构以提高效率:

/^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[\d\W]).{8,}$/

Updated JSFiddle

关于javascript - 为什么\W 元字符在此 Javascript 正则表达式中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30631158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com