10

也许这是一个简单的问题,但今天我有点坚持。

仅当符号%在字符串中出现一次时,我才需要正则表达式进行匹配。

例如:

/regexpForSymbol(%)/.test('50%') => true
/regexpForSymbol(%)/.test('50%%') => false

谢谢!

4

4 回答 4

11

你可以使用:

^[^%]*%[^%]*$

锚点在那里确保每个角色都被覆盖,您可能已经知道是什么[^%]

于 2013-05-26T18:45:15.893 回答
8

干得好。不要指望每个人都为你做这些。

^      # Start of string
[^%]*  # Any number of a character not matching `%`, including none.
%      # Matching exactly one `%`
[^%]*  # 
$      # End of string
于 2013-05-26T18:45:32.417 回答
1

你不需要正则表达式。

function checkIfOne(string, char) {
    return string.split(char).length === 2;
}

用法:

var myString = "abcde%fgh",
    check = checkIfOne(myString, '%'); // will be true
于 2013-05-26T18:45:17.070 回答
1

您可以使用match并计算结果数组:

str.match(/%/g).length == 1
于 2013-05-26T18:53:10.047 回答