/^(-?[1-9]\d*\.\d+|-?0\.\d*[1-9])$/
^:匹配字符串的开始。
(-?[1-9]\d.\d+|-?0.\d[1-9])**:
-?
:匹配零个或一个负号。[1-9]\d*\.\d+
:
[1-9]
:匹配1到9之间的任意一个数字。\d*
:匹配零个或多个数字(0-9)。\.
:匹配一个点字符。\d+
:匹配一个或多个数字(0-9),表示小数部分。|
:逻辑或,表示前后两部分中的任意一个都可以匹配。-?0\.\d*[1-9]
:
-?
:匹配零个或一个负号。0
:匹配数字0。\.
:匹配一个点字符。\d*
:匹配零个或多个数字(0-9)。[1-9]
:匹配1到9之间的任意一个数字,确保小数部分不全为0。$:匹配字符串的结束。
"1.23"
"-1.23"
"0.123"
"-0.123"
"123"
(整数没有小数点)"0.00"
(小数部分全为0)"-0.00"
(小数部分全为0)"abc"
(非数字)import re
pattern = r'^(-?[1-9]\d*\.\d+|-?0\.\d*[1-9])$'
test_strings = ["1.23", "-1.23", "0.123", "-0.123", "123", "0.00", "-0.00", "abc"]
for test_string in test_strings:
if re.match(pattern, test_string):
print(f"'{test_string}': 匹配成功")
else:
print(f"'{test_string}': 匹配失败")
const pattern = /^(-?[1-9]\d*\.\d+|-?0\.\d*[1-9])$/;
const testStrings = ["1.23", "-1.23", "0.123", "-0.123", "123", "0.00", "-0.00", "abc"];
testStrings.forEach(testString => {
if (pattern.test(testString)) {
console.log(`'${testString}': 匹配成功`);
} else {
console.log(`'${testString}': 匹配失败`);
}
});
import java.util.regex.*;
public class RegexTest {
public static void main(String[] args) {
String pattern = "^(-?[1-9]\\d*\\.\\d+|-?0\\.\\d*[1-9])$";
String[] testStrings = {"1.23", "-1.23", "0.123", "-0.123", "123", "0.00", "-0.00", "abc"};
for (String testString : testStrings) {
if (Pattern.matches(pattern, testString)) {
System.out.println("'" + testString + "': 匹配成功");
} else {
System.out.println("'" + testString + "': 匹配失败");
}
}
}
}
using System;
using System.Text.RegularExpressions;
class Program {
static void Main() {
string pattern = @"^(-?[1-9]\d*\.\d+|-?0\.\d*[1-9])$";
string[] testStrings = {"1.23", "-1.23", "0.123", "-0.123", "123", "0.00", "-0.00", "abc"};
foreach (string testString in testStrings) {
if (Regex.IsMatch(testString, pattern)) {
Console.WriteLine($"'{testString}': 匹配成功");
} else {
Console.WriteLine($"'{testString}': 匹配失败");
}
}
}
}
<?php
$pattern = '/^(-?[1-9]\d*\.\d+|-?0\.\d*[1-9])$/';
$testStrings = ["1.23", "-1.23", "0.123", "-0.123", "123", "0.00", "-0.00", "abc"];
foreach ($testStrings as $testString) {
if (preg_match($pattern, $testString)) {
echo "'$testString': 匹配成功\n";
} else {
echo "'$testString': 匹配失败\n";
}
}
?>
pattern = /^(-?[1-9]\d*\.\d+|-?0\.\d*[1-9])$/
test_strings = ["1.23", "-1.23", "0.123", "-0.123", "123", "0.00", "-0.00", "abc"]
test_strings.each do |test_string|
if pattern.match?(test_string)
puts "'#{test_string}': 匹配成功"
else
puts "'#{test_string}': 匹配失败"
end
end