您的位置:首页 > 产品设计 > UI/UE

最近写的一个正则表达式验证器,很简单!很简单!

2013-04-15 16:53 369 查看
package com.freud.regex;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;

/**
*
* @title 0150 ( Small Tool ) - Regex_Validate_tool
* @author Freud, Kang
*
*/
public class Validater {

/** The main frame */
private JFrame frame;
/** The background panel */
private JPanel background;

/** The Label to show "regex" */
private JLabel regex_Label;
/** The TextArea to input regex expression */
private JTextArea regex_TextArea;
/** The Label to show "source" */
private JLabel source_label;
/** The TextArea to input source string */
private JTextArea source_TextArea;

/** The submit button */
private JButton submit;
/** The result Label to show result message */
private JLabel result;
/** The result Panel to show Color status */
private JPanel result_panel;

/**
* Constructor
*/
private Validater() {

/**
* init main frame
*/
frame = new JFrame("Regex Validator");
frame.setBounds(100, 100, 400, 500);
frame.setVisible(true);
frame.setLayout(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

/**
* init main panel
*/
background = new JPanel();
background.setSize(400, 500);
background.setLayout(null);
background.setBackground(new Color(80, 188, 252));

/**
* init components in main panel
*/
regex_Label = new JLabel("Regex");
regex_Label.setBounds(10, 10, 50, 20);

regex_TextArea = new JTextArea();
regex_TextArea.setBounds(60, 10, 300, 100);

source_label = new JLabel("Source");
source_label.setBounds(10, 130, 50, 10);

source_TextArea = new JTextArea();
source_TextArea.setBounds(60, 130, 300, 100);

submit = new JButton("Submit");
submit.setBounds(150, 250, 100, 30);
submit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String source = source_TextArea.getText();
String regex = regex_TextArea.getText();

if (regex == null || regex.isEmpty()) {
notEmpty("Regex cannot be empty!");
return;
}

reset(exe(source, regex));
}
});

/**
* init result panel
*/
result_panel = new JPanel();
result_panel.setBounds(10, 300, 360, 20);
result_panel.setBackground(Color.WHITE);
result_panel.setLayout(null);

result = new JLabel(" Result  :  Waiting");
result.setBounds(140, 0, 110, 20);
result.setBackground(Color.WHITE);

/**
* add the components to correct parents components
*/
result_panel.add(result);

background.add(regex_Label);
background.add(regex_TextArea);
background.add(source_label);
background.add(source_TextArea);
background.add(submit);
background.add(result_panel);

frame.add(background);

// repaint
frame.repaint();
}

/**
* Use java API to judge whether source and regex matched
*
* @param source
*            source string
* @param regex
*            regex expression
* @return
*/
private boolean exe(String source, String regex) {
try {

Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(source);

boolean result = matcher.matches();
String path = Validater.class.getProtectionDomain().getCodeSource().getLocation().toString().replace("file:/", "").replace("file:\\", "")
.replace("bin\\", "").replace("bin/", "");

BufferedWriter bw = null;

try {

bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(path + "Regex_validated_Log.txt"), true)));

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = sdf.format(new Date());

bw.append(date);
bw.append("\r\n\t\t\tregex : ");
bw.append(regex);
bw.append("\r\n\t\t\tSource : ");
bw.append(source);
bw.append("\r\n\t\t\tResult : ");
bw.append(String.valueOf(result));
bw.append("\r\n\r\n");

bw.flush();
} finally {
if (bw != null) {
bw.flush();
bw.close();
}
}

return result;

} catch (Exception e) {
return false;
}

}

/**
* Main method
*
* @param args
*/
public static void main(String[] args) {
new Validater();
}

/**
* According to the compared result, reset the result components
*
* @param flag
*            Type : Boolean
*/
private void reset(boolean flag) {
/**
* if the result is true means the regex matches the source string
*/
if (flag) {
result_panel.setBackground(Color.GREEN);
result.setBackground(Color.GREEN);
result.setText(" Result  :  success");

/**
* Otherwise means not matched
*/
} else {
result_panel.setBackground(Color.RED);
result.setBackground(Color.RED);
result.setText(" Result  :  failed");
}

// repaint
frame.repaint();
}

private void notEmpty(String error) {
result.setBounds(120, 0, 150, 20);
result.setText(error);
result_panel.setBackground(Color.PINK);
result.setBackground(Color.PINK);
frame.repaint();
}
}


最近写的一个正则表达式验证器,很简单,很简单。不过很好玩!

没有什么技术含量,贴出来玩玩吧!

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息