Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有特定值的正则表达式的长度_Javascript_Regex - Fatal编程技术网

Javascript 带有特定值的正则表达式的长度

Javascript 带有特定值的正则表达式的长度,javascript,regex,Javascript,Regex,我有一个针对html表单中文本区域的javascript正则表达式。这是正则表达式: regex = /[EePp]+/ 我还想使用正则表达式检查文本区域中字符串的长度,并将其限制为单个字符 我试过了 regex = /[EePp]{1}/ 它只对这些字符验证正则表达式,但仍然允许在文本区域中包含多个字符的字符串: <input type='text' onkeypress='validate(event)'> 是否可以通过正则表达式执行此操作?如

我有一个针对html表单中文本区域的javascript正则表达式。这是正则表达式:

    regex = /[EePp]+/
我还想使用正则表达式检查文本区域中字符串的长度,并将其限制为单个字符

我试过了

    regex = /[EePp]{1}/
它只对这些字符验证正则表达式,但仍然允许在文本区域中包含多个字符的字符串:

    <input type='text' onkeypress='validate(event)'> 


是否可以通过正则表达式执行此操作?

如果在正则表达式的开始和结束处添加锚定、
^
$
,这将限制它仅匹配模式,而不匹配正在搜索的全部内容

所以,
/^[EePp]{1}$/
——也就是说[EePp]在被搜索内容的最开始,
^
,在它和被搜索内容的结尾,
$
之间没有任何内容

事实证明,在这种情况下,您不需要
{1}
,因为锚点准确地告诉它匹配扩展了多远。因此:

/^[EePp]$/


应该这样做。

为什么不
['p','e'].indexOf(form.field.value.toLower())
或者类似的东西呢?regex只是以不区分大小写的方式强制执行单个字符,就像使用火箭筒拍苍蝇一样。实际上,我通过onkeypress='return(this.value.length<1);'解决了这个问题这不会检查E/P,只是你的字段是0个字符。蒂姆,在这种情况下,你可以发布你自己问题的答案。此外,你可以在一段时间后接受自己问题的答案。这被认为是Stack Oveflow上的一个良好实践,因为它可以让问题的未来读者清楚地看到有用的结果!不久前我确实有一个这样的帐户,但我不确定我是如何登录的,或者它是什么用户名。无论如何,谢谢你抽出时间。这是一个很好的解释。为了进一步简化,您可以使用
/^[ep]$/i
进行不区分大小写的搜索。谢谢您提供的信息。嗯,我实际上认为这是一个javascript错误,因为我只分别抓取每个键,然后它将是一个1个字符的字符串。@MikeBrant:不,我认为它需要保持一个chracter类。e或p。我想你的修改应该是这样的<代码>/^[ep]$/i。但是你说得对,/i标志在这里有帮助。@DWright是的。我忽略了这一点(只是想展示
I
pattern修饰符的用法):@Tim,我不认为我遵循了你所说的javascript错误。