基本上,如果我有一个像
/^(foo|bars)$/
我希望它成功
['', 'f', 'fo', 'foo', 'b', 'ba', 'bar', 'bars']
但后来失败了
['j', 'fa', 'foos'...]
我知道一些已经给出的答案,
/^(f(oo?)?|b(ar?)?)$/
或者
/^f|fo|foo|b|ba|bar$/
虽然它们确实有效,但对于这种特定情况,这不是我宁愿采用的方式,如果将其扩展到 20 个长字,它就会变得难以管理。如果可能的话,我希望有一个更优雅的解决方案。
有什么优雅的想法吗?在我使用它的地方,我可以,而不是正则表达式,传递一个字符串列表,然后检查任何字符串的输入索引是否为 0,但我只是想看看是否有一种方法可以用正则表达式来做。
感谢所有答案,但我主要是在寻找尽可能多的“优雅”解决方案,但在浏览完之后,我不确定是否有一个。
基本上,这是一种强制输入预防。我想要的类似于 Dojo 的 ValidationTextBox,http://dojotoolkit.org/reference-guide/1.7/dijit/form/ValidationTextBox.html。在那里,它会尽快告诉您输入是否与验证模式不匹配(我......可能最终会这样做),但我只想允许正确的输入及其路径.
换句话说,我试图找出是否有任何优雅的方法来查看您是否可以仅针对相同长度的模式检查输入字符串,例如,如果您只输入一个字符,它实际上只针对
/^(f|b)$/
在这种情况下,两个字符,
/^(fo|ba)$/
等等。
虽然我的具体答案是关于正则表达式的交替,但我很想知道一般的正则表达式(从我读过的内容来看,这似乎不太可能)。
我的意思是,如果你有,
/^The dog$/
我想要一种让所有人都能成功测试的方法
['', 'T', 'Th',...'The dog']