📄 utilvalidate.java
字号:
String normalizedSSN = stripCharsInBag(s, SSNDelimiters);
return (isInteger(normalizedSSN) && normalizedSSN.length() == digitsInSocialSecurityNumber);
}
/** isUSPhoneNumber returns true if string s is a valid U.S. Phone Number. Must be 10 digits. */
public static boolean isUSPhoneNumber(String s) {
if (isEmpty(s)) return defaultEmptyOK;
String normalizedPhone = stripCharsInBag(s, phoneNumberDelimiters);
return (isInteger(normalizedPhone) && normalizedPhone.length() == digitsInUSPhoneNumber);
}
/** isUSPhoneAreaCode returns true if string s is a valid U.S. Phone Area Code. Must be 3 digits. */
public static boolean isUSPhoneAreaCode(String s) {
if (isEmpty(s)) return defaultEmptyOK;
String normalizedPhone = stripCharsInBag(s, phoneNumberDelimiters);
return (isInteger(normalizedPhone) && normalizedPhone.length() == digitsInUSPhoneAreaCode);
}
/** isUSPhoneMainNumber returns true if string s is a valid U.S. Phone Main Number. Must be 7 digits. */
public static boolean isUSPhoneMainNumber(String s) {
if (isEmpty(s)) return defaultEmptyOK;
String normalizedPhone = stripCharsInBag(s, phoneNumberDelimiters);
return (isInteger(normalizedPhone) && normalizedPhone.length() == digitsInUSPhoneMainNumber);
}
/** isInternationalPhoneNumber returns true if string s is a valid
* international phone number. Must be digits only; any length OK.
* May be prefixed by + character.
*/
public static boolean isInternationalPhoneNumber(String s) {
if (isEmpty(s)) return defaultEmptyOK;
String normalizedPhone = stripCharsInBag(s, phoneNumberDelimiters);
return isPositiveInteger(normalizedPhone);
}
/** isZIPCode returns true if string s is a valid U.S. ZIP code. Must be 5 or 9 digits only. */
public static boolean isZipCode(String s) {
if (isEmpty(s)) return defaultEmptyOK;
String normalizedZip = stripCharsInBag(s, ZipCodeDelimiters);
return (isInteger(normalizedZip) && ((normalizedZip.length() == digitsInZipCode1) || (normalizedZip.length() == digitsInZipCode2)));
}
/** Returns true if string s is a valid contiguous U.S. Zip code. Must be 5 or 9 digits only. */
public static boolean isContiguousZipCode(String s) {
boolean retval = false;
if (isZipCode(s)) {
if (isEmpty(s)) retval = defaultEmptyOK;
else {
String normalizedZip = s.substring(0,5);
int iZip = Integer.parseInt(normalizedZip);
if ((iZip >= 96701 && iZip <= 96898) || (iZip >= 99501 && iZip <= 99950)) retval = false;
else retval = true;
}
}
return retval;
}
/** Return true if s is a valid U.S. Postal Code (abbreviation for state). */
public static boolean isStateCode(String s) {
if (isEmpty(s)) return defaultEmptyOK;
return ((USStateCodes.indexOf(s) != -1) && (s.indexOf(USStateCodeDelimiter) == -1));
}
/** Return true if s is a valid contiguous U.S. Postal Code (abbreviation for state). */
public static boolean isContiguousStateCode(String s) {
if (isEmpty(s)) return defaultEmptyOK;
return ((ContiguousUSStateCodes.indexOf(s) != -1) && (s.indexOf(USStateCodeDelimiter) == -1));
}
/** Email address must be of form a@b.c -- in other words:
* - there must be at least one character before the @
* - there must be at least one character before and after the .
* - the characters @ and . are both required
*/
public static boolean isEmail(String s) {
if (isEmpty(s)) return defaultEmptyOK;
// is s whitespace?
if (isWhitespace(s)) return false;
// there must be >= 1 character before @, so we
// start looking at character position 1
// (i.e. second character)
int i = 1;
int sLength = s.length();
// look for @
while ((i < sLength) && (s.charAt(i) != '@')) i++;
// there must be at least one character after the .
if ((i >= sLength - 1) || (s.charAt(i) != '@'))
return false;
else
return true;
// DEJ 2001-10-13 Don't look for '.', some valid emails do not have a dot in the domain name
// else i += 2;
// look for .
// while((i < sLength) && (s.charAt(i) != '.')) i++;
// there must be at least one character after the .
// if((i >= sLength - 1) || (s.charAt(i) != '.')) return false;
// else return true;
}
/** isUrl returns true if the string contains ://
* @param s String to validate
* @return true if s contains ://
*/
public static boolean isUrl(String s) {
if (isEmpty(s)) return defaultEmptyOK;
if (s.indexOf("://") != -1)
return true;
return false;
}
/** isYear returns true if string s is a valid
* Year number. Must be 2 or 4 digits only.
*
* For Year 2000 compliance, you are advised
* to use 4-digit year numbers everywhere.
*/
public static boolean isYear(String s) {
if (isEmpty(s)) return defaultEmptyOK;
if (!isNonnegativeInteger(s)) return false;
return ((s.length() == 2) || (s.length() == 4));
}
/** isIntegerInRange returns true if string s is an integer
* within the range of integer arguments a and b, inclusive.
*/
public static boolean isIntegerInRange(String s, int a, int b) {
if (isEmpty(s)) return defaultEmptyOK;
// Catch non-integer strings to avoid creating a NaN below,
// which isn't available on JavaScript 1.0 for Windows.
if (!isSignedInteger(s)) return false;
// Now, explicitly change the type to integer via parseInt
// so that the comparison code below will work both on
// JavaScript 1.2(which typechecks in equality comparisons)
// and JavaScript 1.1 and before(which doesn't).
int num = Integer.parseInt(s);
return ((num >= a) && (num <= b));
}
/** isMonth returns true if string s is a valid month number between 1 and 12. */
public static boolean isMonth(String s) {
if (isEmpty(s)) return defaultEmptyOK;
return isIntegerInRange(s, 1, 12);
}
/** isDay returns true if string s is a valid day number between 1 and 31. */
public static boolean isDay(String s) {
if (isEmpty(s)) return defaultEmptyOK;
return isIntegerInRange(s, 1, 31);
}
/** Given integer argument year, returns number of days in February of that year. */
public static int daysInFebruary(int year) {
// February has 29 days in any year evenly divisible by four,
// EXCEPT for centurial years which are not also divisible by 400.
return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
}
/** isHour returns true if string s is a valid number between 0 and 23. */
public static boolean isHour(String s) {
if (isEmpty(s)) return defaultEmptyOK;
return isIntegerInRange(s, 0, 23);
}
/** isMinute returns true if string s is a valid number between 0 and 59. */
public static boolean isMinute(String s) {
if (isEmpty(s)) return defaultEmptyOK;
return isIntegerInRange(s, 0, 59);
}
/** isSecond returns true if string s is a valid number between 0 and 59. */
public static boolean isSecond(String s) {
if (isEmpty(s)) return defaultEmptyOK;
return isIntegerInRange(s, 0, 59);
}
/** isDate returns true if string arguments year, month, and day form a valid date. */
public static boolean isDate(String year, String month, String day) {
// catch invalid years(not 2- or 4-digit) and invalid months and days.
if (!(isYear(year) && isMonth(month) && isDay(day))) return false;
int intYear = Integer.parseInt(year);
int intMonth = Integer.parseInt(month);
int intDay = Integer.parseInt(day);
// catch invalid days, except for February
if (intDay > daysInMonth[intMonth - 1]) return false;
if ((intMonth == 2) && (intDay > daysInFebruary(intYear))) return false;
return true;
}
/** isDate returns true if string argument date forms a valid date. */
public static boolean isDate(String date) {
if (isEmpty(date)) return defaultEmptyOK;
String month;
String day;
String year;
int dateSlash1 = date.indexOf("/");
int dateSlash2 = date.lastIndexOf("/");
if (dateSlash1 <= 0 || dateSlash1 == dateSlash2) return false;
month = date.substring(0, dateSlash1);
day = date.substring(dateSlash1 + 1, dateSlash2);
year = date.substring(dateSlash2 + 1);
return isDate(year, month, day);
}
/** isDate returns true if string argument date forms a valid date and is after today. */
public static boolean isDateAfterToday(String date) {
if (isEmpty(date)) return defaultEmptyOK;
int dateSlash1 = date.indexOf("/");
int dateSlash2 = date.lastIndexOf("/");
if (dateSlash1 <= 0) return false;
java.util.Date passed = null;
if (dateSlash1 == dateSlash2) {
// consider the day to be optional; use the first day of the following month for comparison since this is an is after test
String month = date.substring(0, dateSlash1);
String day = "28";
String year = date.substring(dateSlash1 + 1);
if (!isDate(year, month, day)) return false;
try {
int monthInt = Integer.parseInt(month);
int yearInt = Integer.parseInt(year);
Calendar calendar = Calendar.getInstance();
calendar.set(yearInt, monthInt - 1, 0, 0, 0, 0);
calendar.add(Calendar.MONTH, 1);
passed = new java.util.Date(calendar.getTime().getTime());
} catch (Exception e) {
passed = null;
}
} else {
String month = date.substring(0, dateSlash1);
String day = date.substring(dateSlash1 + 1, dateSlash2);
String year = date.substring(dateSlash2 + 1);
if (!isDate(year, month, day)) return false;
passed = UtilDateTime.toDate(month, day, year, "0", "0", "0");
}
java.util.Date now = UtilDateTime.nowDate();
if (passed != null) {
return passed.after(now);
} else {
return false;
}
}
/** isTime returns true if string arguments hour, minute, and second form a valid time. */
public static boolean isTime(String hour, String minute, String second) {
// catch invalid years(not 2- or 4-digit) and invalid months and days.
if (isHour(hour) && isMinute(minute) && isSecond(second))
return true;
else
return false;
}
/** isTime returns true if string argument time forms a valid time. */
public static boolean isTime(String time) {
if (isEmpty(time)) return defaultEmptyOK;
String hour;
String minute;
String second;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -