jquery 带有正则表达式的变量与用户输入中的空格不匹配

knpiaxh1  于 2023-11-17  发布在  jQuery
关注(0)|答案(2)|浏览(112)

我目前正试图创建一个转换工具,让人们转换食谱的基础上,服务的大小,他们想。
也就是说,我在尝试匹配输入的字母时遇到了一个问题。基本上,如果用户在输入中输入了一些字母,我希望在结果中返回这些字母。
例如,输入1/2杯面粉,可能返回1杯面粉。
在本例中,您将提取“Cup Flour”文本,并在新值中返回该文本和数字。
我最初打算使用类似这样的代码来输出结果:

// Extract Words
   var letters = originalMeasurementsString.match(/[a-zA-Z\s]/g);

$('#resizedMeasurements').html(resizedWholeNumber + resizedDecimal + letters.join(''));

字符串
在下面的代码中,我有3个主要的if/else语句,每个语句都与其中的不同语句相关联,以检查fraction类型满足的其他各种条件:

// Checks For Mixed Fraction User Input - For Example: 1 1/2 Cup
if (originalMeasurements.includes(' ')) {
}

// Checks For Single Fraction User Input - For Example: 1/2 Cup
else if (originalMeasurements.includes('/')) {
}

// Then the Final Else Statement for a Whole Number User Input - For Example: 1 Cup


这种解决方案适用于混合分数,因为if语句正在检查空格。
如果你输入1/2cup,它也可以很好地处理一个分数。**问题是如何绕过我希望我的用户能够包括一个空格的事实,例如,他们可能会输入1/2cup。
由于.match()函数/[a-zA-Z\s]/g中的\s应该查找白色空格,我有点困惑为什么这不会导致单个分数语句处理用户输入中的空格。

有没有人有任何替代策略来建议我如何修改这段代码以接受带有空格的用户输入?

我还尝试调整上面的else if语句,首先检查/,然后在其中放置一个if语句来检查空格“”,但这也不起作用。
此外,我采取的另一种方法是将语句合并,例如:

else if (originalMeasurements.includes('/') && originalMeasurements.includes(' ')) {}


但那也没用。

完整代码:https://codepen.io/JoyfullyDeveloped/pen/qBgVjer

oyt4ldly

oyt4ldly1#

if (originalMeasurements.includes(' ')) {
}

else if (originalMeasurements.includes('/')) {
originalMeasurements = originalMeasurements.replace(' ', '')
}

字符串

yizd12fk

yizd12fk2#

更新:找到答案

我找到了一个替代的解决方案。我发现了一个更好的方法,根据预期的输入,在单独的变量上使用Regex,而不是使用includes进行if/else语句搜索,然后在if/else语句下进行相应的测试。

相关问题