JavaScript检查字符串末尾是否有特殊字符

4

我正在从文本字段中获取值。如果输入的结尾没有特殊字符(例如%),则我想显示警报消息。

使用案例:

  1. ab%C- 显示警报
  2. %abc- 显示警报
  3. a%bc- 显示警报
  4. abc%- 正常

到目前为止,我想到的正则表达式是:

var txtVal = document.getElementById("sometextField").value;

if (!/^[%]/.test(txtVal))
   alert("% only allowed at the end.");

请帮忙。

谢谢。


如果字符串中没有“%”怎么办? - Sergio Tulentsev
@Sergio Tulentsev。这个字符串不会有它。它是用户输入的值,其中将包含%,这意味着用户将输入abcde%f等。 - Nomad
你是在说我们可以假设字符串中始终存在 '%',然后我们需要检查它是否为最后一个符号吗? - Sergio Tulentsev
4个回答

5

不需要使用正则表达式。indexOf将找到字符的第一个出现位置,所以只需检查它是否在末尾:

if(str.indexOf('%') != str.length -1) {
  // alert something
}

2020年更新,使用string.endsWith()函数。


2
if (/%(?!$)/.test(txtVal))
  alert("% only allowed at the end.");

或通过不使用RegExp使其更易读:

var pct = txtVal.indexOf('%');
if (0 <= pct && pct < txtVal.length - 1) {
  alert("% only allowed at the end.");
}

感谢您的回答和帮助,正则表达式似乎可以工作,但第二个不行。http://jsfiddle.net/ZHpDN/2/ - Nomad
@Nomad,我真是太蠢了。已经修复第二个了。 - Mike Samuel

2
你完全不需要使用正则表达式来检查这个。
var foo = "abcd%ef";
var lastchar = foo[foo.length - 1];
if (lastchar != '%') {
    alert("hello");
}

http://jsfiddle.net/cwu4S/


谢谢您的答案,但是貌似您的答案并不起作用。http://jsfiddle.net/4tzmR/1/ - Nomad
在那个例子中,我有两个语法错误。多了一个闭合括号和一个缺失的分号。http://jsfiddle.net/4tzmR/3/ - mrtsherman

1

这个可行吗?

if (txtVal[txtVal.length-1]=='%') {
    alert("It's there");
}
else {
    alert("It's not there");
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接