gpt4 book ai didi

javascript - 字符串匹配和不匹配的正则表达式问题

转载 作者:行者123 更新时间:2023-11-28 18:55:38 25 4
gpt4 key购买 nike

对于 Javascript 来说是全新的,并且阅读了很多,但似乎无法正确理解这一点。我将 dType 链接到 HTML 页面中的 onclick 事件。我似乎无法使第一个 else if 语句的语法正确,如果用户输入不是数字并且输入与“true”或“false”不匹配,我希望在该语句中发生警报。第二个 else if 似乎匹配任何相同长度的字符串,而我认为这使数组项不区分大小写。对于第四个是其他,我希望在用户输入和值介于 -无穷大和无穷大之间时发出警报。最终目标是提供有关可能数据类型的一些信息,尽管从技术上讲,输入到提示中的任何内容都是字符串。据我所知,有很多关于所有这些的文档,我已经阅读了几个小时,并希望直接询问将帮助我了解这里发生的事情。感谢所有花时间阅读本文的人,尽管它的结构很差。

function dType() {
var inputP= prompt("Type something Nice and Ill tell you something useful:");

if (inputP === "") {
alert('At least give me something...');
} else if (isNaN(inputP)) && inputP.match(^(?!'true' || 'false').)*$){
alert('This is a String');
} else if inputP.match(/['true','false']/i){
alert('This might be a boolean');
} else if inputP.match(/\d+/g){
alert('This has some numbers in it')
} else if inputP = (inputP > MATH.min('') && inputP < MATH.max('')){
alert('this is a number')
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

最佳答案

您的第一个else if包含语法错误,主要是因为您没有将正则表达式放在正则表达式引号中 ( /.../ )。

我认为您尝试使用的表达方式也比您所说的所需内容更复杂,它可能是:

} else if (isNaN(inputP)) && !inputP.match(/^(?:true|false)$/)) {

...这意味着“匹配输入的开头,后跟 truefalse ,然后是输入的结尾”。 (你是对的,你需要一个组来确保交替( | )仅适用于 true/false 而不是 ^$ ;你使用了一个捕获组,这没关系;我上面使用了非捕获组 -- (?:...) -- 因为我们不使用捕获的文本。)然后我们否定结果( ! ),因为您想要来匹配这些。

但通常情况下,如果您只想知道某些内容是否匹配,而不是 String#match你会使用RegExp#test :

} else if (isNaN(inputP)) && !/^(?:true|false)$/.test(inputP)) {

但是,还有其他几个问题:

  • 您需要始终在 if 中的条件周围添加括号。

  • 第二个else if匹配 [ 之间列出的任何字符和] ,不是一对选择

  • 条件可以重新排序以避免重复检查

  • 要检查无穷大,您可以使用 !isFinite

  • 您需要使用或不使用 i如果您要检查某些内容两次,则标记为始终忽略大小写

因为我们不能使用alertprompt在 Stack Snippets 中,这是一个使用输入字段的示例,而不是上面的一些修复:

$("input[type=button]").on("click", function() {
dType($("input[type=text]").val());
});

function dType(inputP) {
if (inputP === "") {
show('At least give me something...');
} else if (/^(?:true|false)$/i.test(inputP)) {
show('This might be a boolean');
} else if (isNaN(inputP)) {
show('This is a String');
} else if (!isFinite(inputP)) {
show('this is infinity')
} else if (isFinite(inputP)) {
show('this is a number')
} else if (/\d+/.test(inputP)) {
show('This has some numbers in it')
} else {
show("dunno");
}
}

function show(msg) {
$("<p>").text(msg).appendTo(document.body);
}
<input type="text" id="prompt">
<input type="button" value="Go">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

关于javascript - 字符串匹配和不匹配的正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33689656/

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