js正则表达式只出现一次字符,js正则表达式只能输入数字
正则表达式 只能出现一次或0次
这个正则表达式是不会接受个位数的,它只接受两位以上的数。
[1-9]这个必须要一个1-9的数
[0-9]*这个代表0-9中的数出现一次或N次
[.]?这个不只是代表一个点了,也可以是其他(中文或者英文或者数字),并且只能出现一个或0个
[1-9]+这里就代表1-9中必须出现至少一次
所以综上2是不接受的。可以匹配的如下例子:
101254.12458
101254.12
11
1.25
1b1264
如何让正则表达式只匹配一次中文字符?
可以参考下下面的代码,希望能帮到你:
String s = new String("大大大大大大");
Pattern pattern = Pattern.compile("^!\\p{ACSII}");//只匹配一个中文字符
Matcher matcher = pattern.matcher();
while(matcher.find()){
System.out.println(matcher.group());
}
js正则表达式,只能出现字母和数字,而且必须出现一个字母或数字
题主的逻辑稍显混乱。“只能出现字母和数字”,那么其实对于非空字符串来说,就已经 必然会 “出现一个字母或数字”了,能理解不?(关键在于后面那个“或”字)
这样:
//?待测试的字符串
var?str?=?'a';
//?题主所要的正则
var?reg?=?/^[a-zA-Z0-9]+$/;
//?测试
alert(reg.test(str));
以上,请采纳,请给分。
javascript 正则表达式问题:
*、?、+、{n}、{n,m}这几个表示匹配次数的符号默认都是贪婪匹配,意思就是以这几个符号前面的一个字符或子表达式能匹配的字符串连续出现次数在这几个符号所能表示的次数范围内最多的字符串作为匹配结果。这些符号后面加?号表示懒惰匹配,表示以次数出现最少的匹配。
?表示匹配0或1次,只要前面的字符或表达式能匹配的字符串出现一次,出现的就会被匹配。正好这里的ba后面有个d,符合出现1次的要求,所以会把d匹配。如果写成bad??,匹配的就是ba了。
*表示匹配0或多次,同样默认是贪婪匹配,会以它前面的子表达式([bd]ad?)在目标字符串中能匹配到的结果连续次数最多的条件进行匹配。([bd]ad?)能在"baddad"中连续匹配2次,所以就把这连续匹配到的结果作为一次整体匹配结果。如果在*后面加?,写成([bd]ad?)*?,则表示以([bd]ad?)出现0次进行匹配,匹配到的结果当然就是空了。
另外出现这样的两个结果是因为match方法的参数即正则没有加g(全局匹配模式),所以正则整体只匹配一次,匹配到的结果作为结果数组的第一个元素,正则中第一个子表达式在结果中匹配的结果作为结果数组的第二元素,正则中第二个子表达式在结果中匹配的结果作为结果数组的第三元素,以此类推。这里只有1个子表达式,所以([bd]ad?)在正则整体匹配到的结果中匹配的结果dad放到了结果数组的第二个元素。