使用正则表达式对象进行Javascript字符串验证
Javascript string validation using the regex object
我是regex和Javascript的新手。我有以下问题:需要在文本字段中检查是否存在一(1)个或多(n)个连续的*
(星号)字符,例如*
、**
、***
或无限(n)*
。允许的字符串,例如*tomato
或tomato*
或**tomato
或tomato**
或作为many(n)*tomato many(n)*
。到目前为止,我已经尝试了以下几种:
var str = 'a string'
var value = encodeURIComponent(str);
var reg = /([^'s]'*)|('*[^'s])/;
if (reg.test(value) == true ) {
alert ('Watch out your asterisks!!!')
}
根据你的问题,很难解读你想要的是什么。。。但让我试试:
只允许在开头或结尾使用星号
如果你只允许在开头或结尾(但不允许两边)有任意数量(至少一个)的星号,比如:
*****tomato
tomato******
-
但不是
**tomato*****
然后使用以下正则表达式:
reg = /^(?:'*+[^*]+|[^*]+'*+)$/;
匹配前面和后面的星号数量
如果你要求大局的星号数量与一样末尾的星号数量相匹配
*****tomato*****
*tomato*
- 但不是
**tomato*****
然后使用这个正则表达式:
reg = /^('*+)[^*]+'1$/;
结果
从你的问题中还不清楚,当这些正则表达式中的每一个匹配时,结果应该是什么?对以上正则表达式测试为阳性的字符串是好是错取决于您和您的需求。只要你有正确的正则表达式,你就可以去提供你需要的功能。
我还编写了正则表达式来排除字符串中的星号。如果您还需要拒绝空格或其他任何内容,只需调整上面表达式的[^...]
部分。
注意:这两个正则表达式都未经测试,但应该可以让您开始构建代码中实际需要的正则表达式
如果我理解正确,你正在寻找这样的模式:
var pattern = /'**[^'s*]+'**/;
这不会匹配像*****
或** ***
这样的字符串,但会匹配***d*** *d
或您认为有效的所有示例(***tomatos
等)
如果我误解了,请告诉我,我会尽力帮助你的。附言:在某个时候,我们都是新手,没有什么可羞愧的,更不用说为之道歉了:)
编辑完您的问题后,我收集到需要在输入的开头或结尾使用星号,但字符串还必须包含至少1个其他字符,因此我提出以下解决方案:
var pattern = /^'*+[^'s*]+|[^'s*]+'*+$/;
'****'.match(pattern);//false
' ***tomato**'.match(pattern);//true
但是,如果不允许*tomato*
,则必须将正则表达式更改为:
var pattern = /^'*+[^'s*]+$|^[^'s*]+'*+$/;
这里有一个方便的网站,可以帮助你在正则表达式的神奇世界中找到自己的路。
- 可变大小的JavaScript字符串如何成为基元类型
- 如何将angularjs中的javascript字符串输出为循环数组
- 如何使用gump任务将html转换为javascript字符串
- 替换变量时,JavaScript字符串replace()不起作用
- 如何替换JavaScript字符串中除字母和数字之外的所有内容(空格/符号)
- 如何从django中的url解析javascript字符串
- 拆分javascript字符串以获得所需的值
- 使用Bootstrap'在Javascript字符串中的popover插件
- 如何替换javascript字符串中的前三个连字符
- 将JavaScript字符串转换为整数
- jquery/javascript字符串中的撇号
- 正在对java中的javascript字符串进行转义
- 如何在Javascript字符串中添加vaule
- Javascript:字符串中有效的基于数组的替换
- 具有负值的Javascript字符串.slice()
- javascript字符串替换$1(如果它是某个值)
- 将子函数的JavaScript字符串转换为实际函数
- JavaScript字符串中的换行符也保存为.txt
- 将Javascript字符串var传递给HTML href标记
- JavaScript 字符串字母和数字检查