【发布时间】:2020-10-20 17:28:09
【问题描述】:
假设我有一个输入字符串,如“自动编码器”和字符串数组
const arr = ['autoencoder', 'auto-encoder', 'autoencoder']
我希望输入字符串与数组中的所有三个匹配。
我创建了正则表达式
arr.some(word => word.match(/^[a-zA-Z]+(?:(?:\s[a-zA-Z]+)+|(?:\-[a-zA-Z]+)|(?:[a-zA-Z]+))$/))
但它似乎不起作用,就好像我用一个像 ['auto-encoder'] 这样的单个元素的数组来测试它,它什么也不返回。
我怎样才能实现所需的匹配?
【问题讨论】:
-
您需要正则表达式特定的解决方案吗?你的意思是
arr.find,arr.findall是正确的吗? JavaScript 本身不存在这样的函数。 -
@sçuçu 这是不正确的。
Array.prototype.find只返回数组中的第一个匹配项。如果您想要多个匹配项,则必须改用Array.prototype.filter。 -
@sçuçu 抱歉,当然是一些而不是 findall。
-
我并不是说它会是正确的答案,我的意思是它本身就是正确的,它在 JavaScript 中也是正确的。
-
我会说如果你有正确的正则表达式来满足你的目的,如果你最后需要一个匹配的数组使用
filter,或者你只是想知道一些数组元素是否匹配或不使用some。如果您不知道是否所有元素都匹配,请使用every。同样find只会返回第一个匹配项。
标签: javascript reactjs regex